【发布时间】:2014-09-08 10:26:29
【问题描述】:
只是想从你们那里得到一些澄清。我试图弄清楚如何在 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.intNumber已经是一个有效值。 -
你甚至可以做
self.intNumber = localIntNumber ?: self.intNumber; -
感谢大家的意见!对于我刚刚用于处理 Foundation 对象的新场景呢?
-
@Cornelius
self.intNumber = localIntNumber ?: self.intNumber;是允许省略第二个操作数的 c 扩展,等效于self.intNumber = localIntNumber ? localIntNumber : self.intNumber; -
在某些情况下,是的,但是您给出的示例都支持使用
if语句(没有else)。因此,对于需要“什么都不做条件”的事情来说,最好避免使用三元运算符。
标签: objective-c c ternary-operator conditional-operator