Reduce/Inject Ruby 中的运算符
Reduce/Inject Operator in Ruby
我正在测试 reduce/inject 方法和 ruby 并遇到了一个具有意外结果的命令。
(1..2).reduce(:<<)
产生 #=> 4
我相信我理解 reduce
和 inject
的作用,但我不理解 <<
运算符。
<<
运算符是二进制左移运算符。它会将数字的二进制表示中的位移动您指定的位数。
因此1 << 2
会将1
的所有位向左移动2
个位置。
在您的示例代码中,1
将向左移动 2
个位置,这是 4
的二进制表示形式,即结果。
<<
是 Binary Left Shift Operator
。左操作数的值向左移动右操作数指定的位数。
例如
10 << 2 #=> 40.
10 二进制表示是 0000 1010
将向左移动 2 位,结果将是 0010 1000
即 40
我正在测试 reduce/inject 方法和 ruby 并遇到了一个具有意外结果的命令。
(1..2).reduce(:<<)
产生 #=> 4
我相信我理解 reduce
和 inject
的作用,但我不理解 <<
运算符。
<<
运算符是二进制左移运算符。它会将数字的二进制表示中的位移动您指定的位数。
因此1 << 2
会将1
的所有位向左移动2
个位置。
在您的示例代码中,1
将向左移动 2
个位置,这是 4
的二进制表示形式,即结果。
<<
是 Binary Left Shift Operator
。左操作数的值向左移动右操作数指定的位数。
例如
10 << 2 #=> 40.
10 二进制表示是 0000 1010
将向左移动 2 位,结果将是 0010 1000
即 40