在Ruby中减少/注入运算符

时间:2015-10-07 13:45:48

标签: ruby methods operators

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

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

我相信我理解reduceinject做了什么,但我不了解<<运算符。

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:1)

Binary Left Shift Operator10 << 2 #=> 40. 。左操作数值向左移动右操作数指定的位数。

e.g。

0000 1010

10个二进制表示0010 1000将向左移2位,结果为{$product.name|replace:$product.manufacturer_name:''} ,即40