F# ((*)2) 和 ((<<<)1) 行为不同

标签 f# functional-programming mapping bitwise-operators

我有这两段代码:

  • [| 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/

相关文章:

scala - 反转函数的 bool 返回类型

arrays - 如何将图像数组映射为每个列表项React JS的两个图像

python - 计算python中的函数链

java - 如何在java8中使用对象内的List属性进行groupingBy的groupingBy

f# - 是否可以在 F# 中使以下示例完全多态?

linq - 在 F# 中将一个对象映射/转换为另一个对象

python - P4Python : AttributeError: type object 'P4' has no attribute 'Map'

MYSQL查询根据查询结果从同一个表中的2条不同记录中提取数据

.net-core - 为什么散列 F# 记录在每次运行时返回不同的值

f# - 如何在F#中设置Hangfire授权?