我有这两段代码:
[| 0 .. N-1 |] |> Array.map((<<<)1)
[| 0 .. N-1 |] |> Array.map((*)2)
我认为他们做的事情完全一样,但事实并非如此。
在第一种情况下,我得到 1, 2, 4
第二个 - 0, 2, 4
.我不明白为什么会有1
在第一种情况下?如果我写 let a = 0 <<< 1
, 我得到 0
.这是一个错误吗?
谢谢!
最佳答案
论据不是按照你想的顺序,而是相反。
比较一下:
let a = 1 <<< 0 // this is equivalent to ((<<<)1) 0
括号运算符后面的第一个参数是左参数,而不是右参数。
关于F# ((*)2) 和 ((<<<)1) 行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24252040/