在Ruby中减少/注入运算符

int*_*sik 2 ruby methods operators

我正在测试reduce/inject方法和ruby,并遇到意外结果的命令.

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

我相信我明白了什么reduce,inject但我不理解<<操作员.

dav*_*rac 6

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

因此,1 << 2将按位置移动1左边的所有位2.

在您的示例代码中,12位置向左移位,这是结果的二进制表示4.