我正在尝试这样做:
var arrayOfValues: [nonOptional]
if let unwrappedValue = optionalValue {
arrayOfValues = [unwrappedValue]
} else {
arrayOfValues = []
}
是否有这种单线?
arrayOfValues = [unwrappedValue?] ?? []
您的代码还不错。在这里冗长并不可怕。
话虽如此,但它更短,更简单:
[optionalValue].compactMap { $0 }
创建一个带有可选值的数组。然后调用compactMap
,该方法返回一个块数组为非零的项目数组。
尝试
arrayOfValues = [optionalValue].compactMap{$0}
或
arrayOfValues = optionalValue != nil ? [optionalValue!] : []
您的问题尚不清楚,因此请您澄清。如果您尝试将所有非零从一个数组转移到另一个数组,则可以使用compactMap
。
let arrayOfOptinals: [Type?] = [...]
let arrayOfValues = arrayOfOptionals.compactMap { $0 }