:& 参数是什么意思?

alb*_*ski 2 ruby

我不明白:&此示例中注入方法的参数:

[1, 2].map do |id|
  my_custom_method(MyModel.find(id))
end).inject(:&).map(&:category).uniq.compact.sort
Run Code Online (Sandbox Code Playgroud)

:+我感觉合理:

[1, 2, 3].inject(:+)
Run Code Online (Sandbox Code Playgroud)

是相同的:

[1, 2, 3].inject { |sum, number| sum + number }
Run Code Online (Sandbox Code Playgroud)

:&如上例所示,这是什么意思?

mec*_*cov 5

Enumerable#inject

如果您指定一个符号,则集合中的每个元素都将传递给 memo 的命名方法

所以&只是Integer#&方法

按位与;如果 self 和 other 中的相应位都为 1,则结果中的每个位为 1,否则为 0

[7, 5].inject(:&) # => 5
Run Code Online (Sandbox Code Playgroud)

它是一样的

7 & 5 # => 5
Run Code Online (Sandbox Code Playgroud)

以及它是如何运作的

7.to_s(2) # => "111"
5.to_s(2) # => "101"
Run Code Online (Sandbox Code Playgroud)
7: 1 1 1
   & & &
5: 1 0 1
--------
5: 1 0 1
Run Code Online (Sandbox Code Playgroud)

  • 它可能不是在整数上完成的,而是在某种数据集上完成的。这是我的猜测,它可能会将数据集添加在一起。 (2认同)