可以使用内联语法有条件地将元素添加到数组中吗?



给定一个数组

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()

最新更新