【发布时间】:2018-09-12 17:09:32
【问题描述】:
例如a =! b 是 if a != b then { a = b }
在 Swift 中,即使设置了相同的值,也会设置属性。由于我使用的是领域通知,因此我不想设置属性,除非它不同。我可以做一堆 IF THEN 语句,但我宁愿创建自己的赋值运算符来使用。
编辑
我想我的问题是双重的,因为 inout 似乎会触发 willSet/didSet 块。
1) 我的主要问题'是否有标准的赋值运算符语法仅在值不同时才分配值?没有回答
2) Swift 中有没有一种方法可以在不触发willSet/didSet 的情况下创建此运算符?重点是不触发领域通知。
【问题讨论】:
-
如果相同,为什么不直接覆盖它呢?不是每次取值不一样都要多加一个操作吗?
-
这个操作符是你创建的
=!还是你要求的替代方法 -
@Carpsen90 我确实创建了 =!,但我对这种情况是否有标准语法感兴趣。如果
a == b已经存在,则不应触发willSet/didSet。 -
AFAIK 唯一不触发属性观察者的方法是 if 条件,
标签: swift operators variable-assignment