只是想从你们那里得到一些澄清。我试图弄清楚如何在 Objective-C 中使用三元运算符的指令的 else 条件下不执行任何操作。我开始做类似下面的事情,它似乎工作得很好,但我只是希望后台没有奇怪的巫术。
(condition) ? [object method] : nil;
self.intNumber = (localIntNumber) ? localIntNumber : self.intNumber; // set intNumber to itself if localIntNumber doesn't exist
self.myObject = (newObject) ? newObject : self.myObject; // different from intNumber in that we're dealing with a Foundation object (can be nil) instead of a regular int
以上任何犹太洁食要做吗?想法?
最佳答案
这两个都是可以接受的,读取方式相同,编译方式相同:
self.intNumber = (localIntNumber) ? localIntNumber : self.intNumber;
self.myObject = (newObject) ?新对象 : self.myObject;
这也是可以接受的,正如@Cornelius 所指出的:
self.intNumber = localIntNumber ?: self.intNumber;
self.myObject = newObject ?: self.myObject;
不过,这种使用三元运算符的方式并不常见。请记住,您是在为 future 的自己(也可能是其他人)编写代码,因此应避免任何不必要的晦涩难懂的事情。
在编写代码时,代码可读性应该是您的首要考虑因素
感谢@trojanfoe 提出这个问题。
如果您没有else
条件,我强烈推荐其中之一:
if (localIntNumber) {
self.intNumber = localIntNumber
}
if (newObject) {
self.myObject = newObject;
}
当然,假设您之前已经将 self.intNumber
和 self.myObject
设置为有效值,以避免需要 else
条件。
关于objective-c - C 中的三元运算符(包括 Objective-C 和 C++)- 在 Else 条件下什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805408/