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

Man*_*uel 5 arrays conditional-statements swift

给定一个数组

let array: [Int]
Run Code Online (Sandbox Code Playgroud)

和一个变量

let addElement: Bool
Run Code Online (Sandbox Code Playgroud)

是否可以仅在addElement使用内联语法为 true 时有条件地添加元素?

以下工作:

let addElement = false
let array = [0, 1, addElement ? 2 : nil] //[0, 1, nil]
Run Code Online (Sandbox Code Playgroud)

但是根本不应该有元素,而不仅仅是一个nil值。可以像上面的例子那样内联编写吗?

sim*_*eon 7

如果你想要内联,你可以使用compactMap删除nil元素:

let addElement = false
let array = [0, 1, addElement ? 2 : nil].compactMap { $0 } //[0, 1]
Run Code Online (Sandbox Code Playgroud)

这样做的优点是您可以在数组中的任何位置插入可选元素:

let addElement = true
let array = [0, addElement ? 2 : nil, 1].compactMap { $0 } //[0, 2, 1]
Run Code Online (Sandbox Code Playgroud)