ternary operator in matlab

后端 未结 9 1965
后悔当初
后悔当初 2020-12-08 19:07

is there a way of typing for if like:

var = (cond) ? true : false;

or do we have to use this format?

if (cond)
 true
else
          


        
9条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-08 19:47

    @Leonid Beschastny is correct about the inlining the if-else-end statement, but If one must, then with any assignment value that can be evaluated as boolean, one can the shortcut boolean operators || and &&:

    (cond) && ((var=true_val)||1) || (var=false_val);
    

    Rules:

    1. shortcut boolean ops || and && must be used, NOT | or &
    2. will work with boolean, numeric and char assignments
    3. will NOT work with cell array or function handles
    4. the assignments must be wrapped in parenthesis.
    5. (var=true_val) must be followed by ||1 in case true_val == false
    6. true and false assignments may be to different variables (i.e. (var1=true_val) while (var2=false_val))
    7. true_val and false_val can be different types provided each then can be evaluated as boolean

    Alternatively one can do this:

    cond && (func1(..)||1) || func2(...);
    

    provided func1 and func2 return a boolean testable value including nothing at all (but no cell arrays!):

提交回复
热议问题