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

时间:2016-12-28 01:43:07

标签: arrays swift conditional-statements

给定数组

let array: [Int]

和变量

let addElement: Bool

只有在使用内嵌语法addElement为真时才能有条件地添加元素吗?

以下作品:

let addElement = false
let array = [0, 1, addElement ? 2 : nil] //[0, 1, nil]

但是根本不应该有任何元素,而不仅仅是nil值。 可以像上面的例子那样在线编写吗?

2 个答案:

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