Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何实现布尔异或?_F# - Fatal编程技术网

F# 如何实现布尔异或?

F# 如何实现布尔异或?,f#,F#,显然,没有按位异或运算符的布尔版本(^^^^)。。。怎么办?这是由不相等运算符提供的好的。我被难住了。如何替代布尔异或?在输入不同时为True,在输入相同时为False。这正是xor操作所做的。当然!我问得太匆忙了。让你想知道为什么C#拥有它。在F#中,异或运算符的一个细微区别是推断其操作数为bool类型。Doy,是的,这很有效,谢谢。但是我看到使用会导致F#编译器发出类似调用x;叫y;ceq;ldc.i4.0;ceq而C#编译器将发出调用x;叫y;异或用于^。。。我想知道是否存在(微)性能影响

显然,没有按位异或运算符的布尔版本
(^^^^)
。。。怎么办?

这是由不相等运算符提供的

好的。我被难住了。
如何替代布尔异或?
在输入不同时为True,在输入相同时为False。这正是xor操作所做的。当然!我问得太匆忙了。让你想知道为什么C#拥有它。在F#中,异或运算符的一个细微区别是推断其操作数为bool类型。Doy,是的,这很有效,谢谢。但是我看到使用
会导致F#编译器发出类似
调用x;叫y;ceq;ldc.i4.0;ceq
而C#编译器将发出
调用x;叫y;异或
用于
^
。。。我想知道是否存在(微)性能影响。可以使用内联IL发出
xor
指令,但此功能已被弃用,他们告诉我们,他们打算在下一版本中删除它:
让内联xor(x:bool)(y:bool)=(#“xor”x y:bool)
如果已知类型为bool,为什么要内联?还有,为什么不
让xor a b=if a那么就不让b else b
或者甚至
让xor a b=ab
let inline xor a b = (a || b) && not (a && b)