【问题标题】:Erlang compound boolean expressionErlang 复合布尔表达式
【发布时间】:2020-04-07 02:28:59
【问题描述】:

我阅读了有关使用 andor 运算符的文档,但为什么以下内容没有评估?

X = 15,
Y = 20,
X==15 and Y==20.

我期待终端中出现“true”,但在 ==" 之前出现“语法错误”。

【问题讨论】:

    标签: erlang boolean


    【解决方案1】:

    试试:

    X = 15.
    Y = 20.
    (X==15) and (Y==20).
    

    【讨论】:

      【解决方案2】:

      您可能不想使用 and。 and 有两个问题,首先你注意到它的优先级很奇怪,其次它不会短路它的第二个参数。

      1> false and exit(oops).
      ** exception exit: oops
      2> false andalso exit(oops).
      false
      

      andalso 是后来被引入该语言的,其行为方式可能更熟悉。一般来说,使用 andalso,除非你有充分的理由更喜欢 and。

      顺便说一句,orelse 相当于 or。

      【讨论】:

      • 这真的取决于你是将它用于控制还是布尔测试。使用和/或有利于测试“布尔”操作的返回值。
      【解决方案3】:

      不用大括号也可以

      X = 15.
      Y = 20.
      X == 15 andalso Y == 20.
      

      【讨论】:

        【解决方案4】:
        猜你喜欢
        • 2012-02-15
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多