Reduce/Inject Ruby 中的运算符

Reduce/Inject Operator in Ruby

我正在测试 reduce/inject 方法和 ruby 并遇到了一个具有意外结果的命令。

(1..2).reduce(:<<) 产生 #=> 4

我相信我理解 reduceinject 的作用,但我不理解 << 运算符。

<< 运算符是二进制左移运算符。它会将数字的二进制表示中的位移动您指定的位数。

因此1 << 2会将1的所有位向左移动2个位置。

在您的示例代码中,1 将向左移动 2 个位置,这是 4 的二进制表示形式,即结果。

<<Binary Left Shift Operator。左操作数的值向左移动右操作数指定的位数。

例如

10 << 2 #=> 40.

10 二进制表示是 0000 1010 将向左移动 2 位,结果将是 0010 1000 即 40