Swift 程序 从 Set 删除空值
在 Swift 中,Set 用于创建一个无序的唯一元素的集合。在 Swift 中,要将空值存储在 Set 中,必须将集合定义为可选类型,因为 nil 是一个可选值。因此,要从 Set 中删除空值,我们可以使用内置的函数如 remove() 和 filter()。让我们详细讨论这两种方法以及示例。
方法 1:使用 remove(_:) 函数
remove(_:) 函数用于从给定的 Set 中删除或删除指定的元素。
语法
func remove(ele)
其中 ele 是要从指定 Set 中删除的元素。如果该函数返回一个参数值,这表示它是给定 Set 的一部分。否则返回 nil。
示例
在以下代码中,我们首先创建一个可选 Set,以存储其中的 nil 值。然后使用 remove(_:) 函数来移除该 nil 值,然后显示更新后的 Set。
import Foundation
import Glibc
// 创建可选类型 Set 以存储 nil 值
var mySet: Set<Int?> = [23, nil, 21, nil, 98, nil]
// 从可选 Set 中移除 null
mySet.remove(nil)
print("Set:", mySet)
输出
Set: [Optional(21), Optional(98), Optional(23)]
方法 2:使用 filter(_:) 函数
Swift 提供了一个名为 filter(_: )的内置函数。这个函数用于返回一个仅包含满足给定条件的元素的集合。
语法
func filter{col}
其中 col 是取一个元素序列的闭包,返回一个布尔值,以指示给定元素是否应按照预期被包含在返回集合中。
示例
在以下 Swift 示例中,我们首先创建一个可选 Set,以存储 null 值和字符串值。然后使用 filter() 函数来创建一个仅包含非空值的新 Set,在这里我们使用 {$0 != nil} 闭包来移除 nil 值。然后使用 map() 函数将可选 Set 转换为非可选 Set,因为我们已经过滤掉了 nil 值,所以现在我们可以安全地使用强制解包运算符(’!’) 将可选值转换为非可选值。并显示 result。
import Foundation
import Glibc
// 创建可选类型 Set 以存储 nil 值
var mSet: Set<String?> = ["mox", "fox", nil, "kox", nil, "aox"]
// 过滤掉 null 值
let newSet = mSet.filter { 0 != nil }.map {0! }
print("New Set with no null values:", newSet)
输出
New Set with no null values: ["kox", "fox", "aox", "mox"]
结论
这就是我们如何从 Set 中删除 null。在这里,不要困惑集合元素的顺序会发生变化,因为 Set 是一组无序的元素。您也无法在非可选集合中存储 nil,如果您试图这样做,您将会收到错误。