【问题标题】:Reducing logical operators in Perl 6减少 Perl 6 中的逻辑运算符
【发布时间】:2018-09-27 06:14:52
【问题描述】:

我正在尝试减少 and 并得到一个奇怪的输出:

> [and] 2>1, 3>2, put 1, put 2
2
1True

同时,如果我在每个表达式之间加上and,一切正常。

> 2>1 and 3>2 and put 1 and put 2
1
2

造成这种差异的原因是什么?

【问题讨论】:

  • 请注意put 1 返回True,而put 1, put 2put (1, put 2) 相同。你想用 put 语句达到什么目的?
  • @HåkonHægland 谢谢!加括号解决了问题:[and] 2>1, 3>2, (put 1), (put 2)

标签: raku


【解决方案1】:

详细说明 Håkon 的评论。区别在于优先级。

这两个语句等价于:

> [and] (2>1), (3>2), (put 1,(put 2))
2
1True
> (2>1) and (3>2) and (put 1) and (put 2)
1
2

在第一种情况下,它首先计算put 2,打印2并返回True,然后是put 1,True,打印1True,返回True。整个表达式的计算结果为 True,但不再打印任何内容。

在第二种情况下,put 1 首先评估,打印1 并返回True,然后put 2 评估,打印2 并返回True。同样,整个表达式的计算结果为 True,但不再打印任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2020-12-20
    相关资源
    最近更新 更多