我在 Objective-C 中遇到了条件 if 语句:
self.frontCardView = self.backCardView;
if ((self.backCardView = [self popPersonViewWithFrame:[self backCardViewFrame]])) {
// Fade the back card into view.
...
}
基本上:
if ((self.backCardView = self.popPersonViewWithFrame(self.backCardViewFrame()))) {...}
这会将“self.backCardView
”设置为返回值
“-popPersonViewWithFrame:
”。在 C(和 Objective-C)中,一个
assignment 是分配的值。
在这种情况下,表达式“(self.backCardView = [self
popPersonViewWithFrame:self.backCardViewFrame])
”的返回值
“-popPersonViewWithFrame:
”。
如果返回值为“nil
”,则不执行条件(因为“nil
”是一个false
值)。
如果我尝试在 Swift 中做同样的事情:
self.frontCardView = self.backCardView
if ((self.backCardView = self.popPersonViewWithFrame(self.backCardViewFrame()))) {
// Fade the back card into view.
...
}
我在编译时遇到错误:
Type '()' does not conform to protocol 'LogicValue'
最佳答案
出于安全原因,Swift 被专门设计为不允许在条件中测试赋值(人们不小心使用了一个 =
而不是两个)。赋值运算符的结果始终为 void ()
,如错误所述。
关于swift - Swift 中的条件 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666851/