给定一个数组
let array: [Int]
和一个变量
let addElement: Bool
仅当使用内联语法为 true 时,是否可以有条件地添加元素addElement
?
以下作品:
let addElement = false
let array = [0, 1, addElement ? 2 : nil] //[0, 1, nil]
但是根本不应该有元素,而不仅仅是一个nil
值。 可以像上面的例子一样内联编写吗?
如果你想要内联,你可以使用compactMap
来删除nil
元素:
let addElement = false
let array = [0, 1, addElement ? 2 : nil].compactMap { $0 } //[0, 1]
这样做的好处是您可以将可选元素插入数组中的任何位置:
let addElement = true
let array = [0, addElement ? 2 : nil, 1].compactMap { $0 } //[0, 2, 1]
虽然下面的方法没有在数组的初始化中定义元素,但它确实具有未预定义新索引的优点。 我认为这是您最接近在线解决方案的方法。
let addElement: Bool = false
var array = [0, 1]
(addElement) ? array.append(2) : Void()