我正在测试reduce / inject方法和ruby,并遇到意外结果的命令。
(1..2).reduce(:<<)
生成#=> 4
我相信我理解reduce
和inject
做了什么,但我不了解<<
运算符。
答案 0 :(得分:6)
<<
运算符是二进制左移运算符。它会将数字的二进制表示中的位移动到您指定的位数。
因此1 << 2
会将1
的所有位置移位2
个位置。
在您的示例代码中,1
将向左移动2
个位置,这是4
的二进制表示形式,这是结果。
答案 1 :(得分:1)
Binary Left Shift Operator
是10 << 2 #=> 40.
。左操作数值向左移动右操作数指定的位数。
e.g。
0000 1010
10个二进制表示0010 1000
将向左移2位,结果为{$product.name|replace:$product.manufacturer_name:''}
,即40