我有以下数组:
[0, 0, 1, 1, 0, 0]
在某些情况下,我必须将0切换为1,反之亦然。
在JS中我会这样做:array[index] = !array[index]
但是,在Swift中,这不起作用。
是否有一种优雅的方式可以在不使用if -> else
语句的情况下进行此类转换?
答案 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 = 1
和let i = !1 // i = 0
您可以使用Bool
代替Int
,原生支持:let b = !true // b = false
和let b = !false // b = true