给定数组
let array: [Int]
和变量
let addElement: Bool
只有在使用内嵌语法addElement
为真时才能有条件地添加元素吗?
以下作品:
let addElement = false
let array = [0, 1, addElement ? 2 : nil] //[0, 1, nil]
但是根本不应该有任何元素,而不仅仅是nil
值。
可以像上面的例子那样在线编写吗?
答案 0 :(得分:3)
如果你想要这个内联,你可以使用 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]
答案 1 :(得分:2)
虽然以下方法没有在数组的初始化中定义元素,但它确实具有未预定义新索引的优点。 我认为这是最接近内联解决方案的。
let addElement: Bool = false
var array = [0, 1]
(addElement) ? array.append(2) : Void()