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?"
- 看看是否可以用更少的
if
s 以不同的方式完成流程。
- 寻找创建子例程的地方。
您的问题 (@user3752049) 的解决方案是:
a > b ? ^{ statement1; statement2; statement3;}() : ^{statement1; statement2;}();
谢谢
正如标题所说,我想知道是否有一种方法可以在 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?"
- 看看是否可以用更少的
if
s 以不同的方式完成流程。 - 寻找创建子例程的地方。
您的问题 (@user3752049) 的解决方案是:
a > b ? ^{ statement1; statement2; statement3;}() : ^{statement1; statement2;}();
谢谢