[["B", "W"], ["C", "W"]].reduce([], :&)
#=> ["W"]
[["B", "W", "A"], ["A", "C", "W"], ["W", "E", "A"]].reduce([], :&)
#=> ["W", "A"]
См. Enumerable # уменьшите (он же inject
) и Array # & . arr.reduce([], :&)
является сокращением для:
arr.reduce([]) { |intersection, a| intersection & a }
reduce
присваивается начальное значение []
, если его получатель является пустым массивом.