gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:55:39 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com