Objective C :具有多个语句的三元运算符

Objective C : Ternary operator with multiple statements

正如标题所说,我想知道是否有一种方法可以在 Objective C 中对多个语句使用三元运算符。 我知道可以用 javascript、php、C 等其他语言轻松完成,但我找不到 Objective C.

的解决方案

我想实现这样的东西:

a > b ? (陈述1,陈述2,陈述3):(陈述1,陈述2);

基本上我只是想避免很多 if-else 块以保持更好的代码可读性。 还请建议使用三元运算符而不是 if-else 块是否会显着损害应用程序性能。

你可以轻松做到这一点;请注意,三元运算符只能包含表达式,包括逗号表达式。所以你的语句只能是表达式、赋值、方法调用等,而不能是 if / return / while 等。而三元运算符想要一个结果,所以每组中的最后一个表达式必须具有相同的类型;您可以在每个列表的末尾添加 (void) 0 。

也就是说,您绝对没有让代码更具可读性。每个阅读它的人都会开始咒骂你并怀疑你的精神健全。所以不要这样做

条件运算符 ?: 不能替代 if/else 块。我确定您可以调整逻辑以使其工作,但这只会使含义更加模糊。

我的问题是,"what are you saving?"

a > b ? ( statement1, statement2, statement3 ) : ( statement1, statement2 );
if (a > b) { statement1; statement2; statement3; } else { statement1; statement2; }

if/else 块总共长了 7 个字符。

一个更大的问题是,"Can the logic be composed in a better way?"

  • 看看是否可以用更少的 ifs 以不同的方式完成流程。
  • 寻找创建子例程的地方。

您的问题 (@user3752049) 的解决方案是:

a > b ? ^{ statement1; statement2; statement3;}() : ^{statement1; statement2;}();

谢谢