代码之家  ›  专栏  ›  技术社区  ›  jshep

如何在一个等价语句中包含多个条件?

  •  5
  • jshep  · 技术社区  · 8 年前

    如果变量满足两个值中的一个,我试图触发一个条件。我知道我可以这样表达:

    if x == 5 || x == 6
        execute code...
    end
    

    但我想知道是否有更优雅的东西以防万一 x 有一个很长的名字。类似于:

    if x == {5, 6}
        execute code...
    end
    

    有人有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  6
  •   Lumen    8 年前

    事实上,有一种普遍的做法。您可以使用 any 用于测试是否 x 等于数组的任意元素:

    if any(x == [5, 6])
        % execute code
    end
    

    这适用于数字阵列。如果您正在处理单元阵列,则可以使用 ismember (感谢@nilZ0r!)

    choices = {'foo', 'bar', 'hello'};
    x = 'hello';
    
    if ismember(x, choices)
        % execute code
    end
    

    伊斯梅尔 适用于数值和单元阵列(感谢@tasospapatylianou)。

        2
  •  3
  •   Robert Seifert    8 年前

    A. switch-case 环境将是一个优雅的选择:

    switch x
        case {5,6}
            x.^2
        case {7,8}
            x.^4
        otherwise
            x.^3
    end
    

    也适用于字符串:

    switch x
        case {'foo','bar'}
            disp(x)
        otherwise
            disp('fail.')
    end