运算符优先级和关联

时间:2017-02-06 17:41:02

标签: f# operators

我定义了一个XOR运算符:

let (.||.) x y = (x || y) && not(x && y)

这样

true .||. true
true .||. false

分别返回falsetrue

根据Hansen & Rischel&&运算符的优先级高于||运算符(以及.||.运算符。因此,为什么

    true .||. true && false
    true .||. false && true

分别返回falsetrue?结果似乎是由 (true .||. true) && false代替预期的true .||. (true && false)

1 个答案:

答案 0 :(得分:7)

根据MSDN,运算符.||.将属于|op模式(即忽略前导点,从管道开始),这是运算符&&下面的两行在表格中,与&op<op等在同一行。因此它实际上具有更高优先级而不是&&

F# spec在4.4.2节中说同样的事情,只有表格倒置在那里(从最高到最低)。

无法对您正在阅读的图书发表评论,也不方便。