假设我有一个Ints 数组。
var nums = [5, 4, 3, 2, 1]
var maybeNum: Int?
nums.append(maybeNum)
Run Code Online (Sandbox Code Playgroud)
但这会导致错误。我真的需要检查它是否具有值,并且仅在具有值时才插入它吗?
您可以使用以下扩展名:
extension Array {
public mutating func append(_ newElement: Element?) {
if let element = newElement {
self.append(element)
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您仍然可以使用原始append方法。附加非可选元素时,将使用常规方法。附加可选元素时,将使用此方法,并且仅在元素不为 nil 时才附加该元素。
将 map(_:) 与可选绑定一起使用,即仅在 MaybeNum 不为 nil 时追加:
var nums = [5, 4, 3, 2, 1]
var maybeNum: Int?
maybeNum.map { nums.append($0) }
Run Code Online (Sandbox Code Playgroud)
苹果文档:https : //developer.apple.com/documentation/swift/optional/1539476-map
首先,您必须“解开”maybeNum其类型为 的Int?。解开后,num的类型是Int可以附加到nums: [Int]
if let num = maybeNum {
nums.append(num)
}
Run Code Online (Sandbox Code Playgroud)
您可以将 nums 设为可选 Int 数组。
var nums = [Int?]()
nums = [5, 4, 3, 2, 1]
var maybeNum: Int?
nums.append(maybeNum)
Run Code Online (Sandbox Code Playgroud)
然而,现在数组内部有一个 nil 元素。
另一种选择是:
var nums = [5, 4, 3, 2, 1]
var maybeNum: Int?
if maybeNum != nil {nums.append(maybeNum!)}
Run Code Online (Sandbox Code Playgroud)
这在一行中完成了你想要的事情。
| 归档时间: |
|
| 查看次数: |
1356 次 |
| 最近记录: |