只是想得到你们的澄清。我试图弄清楚如何在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
以上任何一个犹太教徒要做什么?想法?
答案 0 :(得分:2)
这两个都是可以接受的,以相同的方式阅读并以相同的方式编译:
self.intNumber = (localIntNumber) ? localIntNumber : self.intNumber;
self.myObject = (newObject) ? newObject : self.myObject;
这也是可以接受的,如@Cornelius所示:
self.intNumber = localIntNumber ?: self.intNumber;
self.myObject = newObject ?: self.myObject;
这种使用三元运算符的方式并不常见。记住,你正在为你未来的自己(或许是其他人)编写代码,所以应该避免任何不必要的隐秘。
感谢@trojanfoe提出这个问题。
如果您没有else
条件,我强烈推荐其中一种:
if (localIntNumber) {
self.intNumber = localIntNumber
}
if (newObject) {
self.myObject = newObject;
}
当然,假设您之前已将self.intNumber
和self.myObject
设置为有效值,以避免需要else
条件。