计算nil
值的数量
使用for case ...
除了已经提到的函数式方法之外,您还可以使用for case ... in
循环来有条件地增加total
计数器。
let arr = [1, nil, 3, 4, nil, 6] // [Int?] inferred
var numberOfNilValues = 0
for case .none in arr { numberOfNilValues += 1 }
print(numberOfNilValues) // 2
使用for ... where
或者,另一种方式是将for
循环与where
子句结合起来进行条件递增:
let arr = [1, nil, 3, 4, nil, 6]
var numberOfNilValues = 0
for e in arr where e == nil { numberOfNilValues += 1 }
print(numberOfNilValues) // 2
计算非nil
值的数量
值得明确提到,我们可以类似上面的for case ...
方法,来计算那些不是nil
(即.some
)的值的数量:
let arr = [1, nil, 3, 4, nil, 6]
var numberOfNonNilValues = 0
for case .some in arr { numberOfNonNilValues += 1 }
print(numberOfNonNilValues) // 4
在这种情况下,我们也可以使用简写(通配符可选模式)
_?
形式:
var numberOfNonNilValues = 0
for case _? in arr { numberOfNonNilValues += 1 }
print(numberOfNonNilValues) // 4