objective-c - C 中的三元运算符(包括 Objective-C 和 C++)- 在 Else 条件下什么都不做

标签 objective-c c ternary-operator conditional-operator

只是想从你们那里得到一些澄清。我试图弄清楚如何在 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.intNumberself.myObject 设置为有效值,以避免需要 else 条件。

关于objective-c - C 中的三元运算符(包括 Objective-C 和 C++)- 在 Else 条件下什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805408/

相关文章:

objective-c - 添加OpenKit时出现重复符号错误

iphone - 在 iPhone 5 的横向模式下启动启动画面

php - 如何将三元运算符存储到 laravel Blade 中的 html 元素中

java - 尝试在java字符串的开头和结尾添加引号 ("")

javascript - 扩展三元表达式

ios - 如何使 UIViewControllerSubclass 成为 UITableViewController 的子类

ios - 使用 [NSJSONSerialization dataWithJSONObject :] 转换为 NSData 时保持 NSDictionary 键的顺序

c - 使用 Win32 API 安全删除 USB 驱动器?

c - 运行程序时出现段错误

c - 访问 c 中结构中的数组成员是访问值还是地址?