将Array中的值从0切换为1并返回

时间:2018-02-04 16:07:34

标签: swift int

我有以下数组:

[0, 0, 1, 1, 0, 0]

在某些情况下,我必须将0切换为1,反之亦然。

在JS中我会这样做:array[index] = !array[index]但是,在Swift中,这不起作用。

是否有一种优雅的方式可以在不使用if -> else语句的情况下进行此类转换?

2 个答案:

答案 0 :(得分:4)

只需使用地图:

array = array.map{1-$0}

答案 1 :(得分:0)

在Swift中,Int无法转换为Bool,Bool无法转换为Int。这意味着您无法对Int执行此类逻辑操作。我建议您编写自己的运算符,如下所示:

prefix operator !
prefix func !(value: Int) -> Int {
    return (value &+ 1) % 2
}

然后您可以写:let i = !0 // i = 1let i = !1 // i = 0

您可以使用Bool代替Int,原生支持:let b = !true // b = falselet b = !false // b = true