objective-c - 在 Objective-C 中使用三元运算符 + && 执行赋值和操作?

标签 objective-c xcode syntax conditional ternary-operator

以三重幸福的名义(以及对冗长的蔑视)......我希望,并且有点惊讶......

BOOL isItOpen = YES;
isItOpen = (isItOpen ? YES : NO); // yes, dumbie, it's open.

工作正常......但是......

isItOpen = (isItOpen ? [it close] && NO : [it open] && YES);

导致 二进制表达式的无效操作数('void' 和 'int')

关于是否可以像在比如,BASH 或 PHP。我尝试了 &&& 安排的各种组合,但无济于事......因为我是一个 C 白痴......但如果这种“方式这样做”在语言上是不可能的……有没有另一个-同样简洁? (即,不涉及if?)

最佳答案

C(以及 C++ 和 Objective-C1)运算符构成 expressions ;它们旨在评估一个值,而不是控制程序流。

所以 ?:&&|| 都提供 short-circuit evaluation对于它们的参数,您不能使用它们来有条件地调用任意函数;2 为此,您应该使用传统的控制流结构(即 if)。

可以使用鲜为人知的 comma operator实现这一点,但我强烈建议您不要,因为它非常不合时宜,而且难以阅读。例如:

isItOpen = condition ? (func1(), NO) : (func2(), YES);


<子>

  1. 实际上,我不了解 Objective-C。众所周知,这是可能的!
  2. “任意”是指返回 void 的函数,或者在 && 的情况下不能隐式转换为 bool 的类型> 和 ||,或者在 ?: 情况下的非匹配类型。

关于objective-c - 在 Objective-C 中使用三元运算符 + && 执行赋值和操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811044/

相关文章:

objective-c - 应用程序不再在设备上运行......吓坏了

iOS - 在 Notes 应用程序上模拟键盘动画

iphone - setAnimationDidStopSelector @selector 没有运行方法

vim - Vim 中的语法提示

objective-c - 如何使用 Objective C 访问特定的 iOS 应用程序目录?

ios - "JSONValue"使用 SBJson 时关键字未被识别?

ios - 使用构建阶段的文件预处理 Info.plist

list - 在Haskell中构建数据类型列表

C 编程 - 多行注释

objective-c - 在后台线程上搜索