我正在尝试创建类似于(&&)和(||)的运算符,并且具有相同的优先级。
我的代码是:
let (&&.) = (&&)
let (||.) = (||)
printf $"{true ||. true &&. false} = {true || true && false}"这将打印"False = True“。
据我所知,在F#中,自定义运算符的优先级是由它们的第一个字符定义的。为什么我会得到这个输出,我该如何修复它?
发布于 2021-11-13 19:01:12
我认为这是预期的工作。根据this table的说法,&&的优先级高于||,但&&.和||.的优先级相同(作为&op和|op的实例)。
要解决这个问题,您可以为您的自定义"and“函数选择一个优先级更高的运算符,如下所示:
let (^^.) = (&&)
let (||.) = (||)
printf $"{true ||. true ^^. false} = {true || true && false}" // "true = true"

https://stackoverflow.com/questions/69952410
复制相似问题