用于将值设置为未包装值或为空的数组的语法糖

问题描述 投票:0回答:3

我正在尝试这样做:

var arrayOfValues: [nonOptional]

if let unwrappedValue = optionalValue {
  arrayOfValues = [unwrappedValue] 
} else {
  arrayOfValues = []
}

是否有这种单线?

arrayOfValues = [unwrappedValue?] ?? []
swift
3个回答
1
投票

您的代码还不错。在这里冗长并不可怕。

话虽如此,但它更短,更简单:

[optionalValue].compactMap { $0 }

创建一个带有可选值的数组。然后调用compactMap,该方法返回一个块数组为非零的项目数组。


1
投票

尝试

arrayOfValues = [optionalValue].compactMap{$0}

arrayOfValues = optionalValue != nil ? [optionalValue!] : []

0
投票

您的问题尚不清楚,因此请您澄清。如果您尝试将所有非零从一个数组转移到另一个数组,则可以使用compactMap

let arrayOfOptinals: [Type?] = [...]
let arrayOfValues = arrayOfOptionals.compactMap { $0 }
© www.soinside.com 2019 - 2024. All rights reserved.