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

时间:2015-02-18 11:00:43

标签: objective-c ternary-operator

正如标题所说,我想知道是否有办法在目标C中使用具有多个语句的三元运算符。 我知道它可以在其他语言中轻松完成,如javascript,php,C等,但我找不到Objective C的解决方案。

我想实现这样的事情:

a> b? (statement1,statement2,statement3):( statement1,statement2);

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

3 个答案:

答案 0 :(得分:3)

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

我的问题是,"你在节省什么?"

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

if / else块总共超过7个字符。

更大的问题是,"逻辑能否以更好的方式组成?"

  • 查看是否可以使用更少的if来完成流程。
  • 寻找创建子例程的地方。

答案 1 :(得分:0)

你可以很容易地做到这一点;请注意,三元运算符只能包含表达式,包括逗号表达式。因此,您的语句只能是表达式,赋值,方法调用等,但如果/ return / while等则不能。并且三元运算符需要结果,因此每个组中的最后一个表达式必须具有相同的类型;你可以在每个列表的末尾添加(void)0。

那就是说,你绝对不会让你的代码更具可读性。阅读它的每个人都会开始咒骂你并怀疑你的心理健康。所以不要这样做

答案 2 :(得分:0)

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

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

由于