gpt4 book ai didi

swift - 不使用 nil 合并运算符重新赋值的简写 (??)

转载 作者:行者123 更新时间:2023-11-30 10:18:35 26 4
gpt4 key购买 nike

是否有执行此操作的简写:

var x: Int = 42;
var y: Int? = nil
x = y ?? x

例如如果 y 为零,则重新分配相同的值/不重新分配

编辑:为了澄清,在示例中,如果 y 为零,我想保留 x 的值 (42)。更好的措辞可能是“如果不是 nil 则赋值”运算符。

Edit2:正如@rintaro 指出的那样,重新分配可能会产生我想避免的副作用。我可以像这样使用if let:

var x: Int = 42;
var y: Int? = nil
if let y = y {
x = y
}

但这相当冗长。

最佳答案

没有内置运算符。

使用 map 代替:

map(y) { x = $0 }
// OR
y.map { x = $0 }

注意:当观察到变量时,此技术很有用:

var x: Int = 42 {
didSet {
println("didSet")
}
}

var y: Int? = nil
x = y ?? x // `didSet` is called
map(y) { x = $0 } // `didSet` is not called

关于swift - 不使用 nil 合并运算符重新赋值的简写 (??),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com