我有这两段代码:
[| 0 .. N-1 |] |> Array.map((<<<)1)
[| 0 .. N-1 |] |> Array.map((*)2)
我认为他们完全做同样的事情,但他们没有。
在第一种情况下,我得到1, 2, 4
,在第二种情况下得到0, 2, 4
。我不明白为什么第一种情况有1
?如果我写let a = 0 <<< 1
,我会得到0
。这是一个错误吗?
谢谢!
答案 0 :(得分:8)
参数不是你想的顺序,反之亦然。
将其与:
进行比较let a = 1 <<< 0 // this is equivalent to ((<<<)1) 0
带括号的运算符后面的第一个参数是左参数,而不是右参数。