Это то же самое, что и это:
[array1, array2, array3, array4].compact.reduce([]) do |memo, array|
memo | array
end
Несмотря на синтаксический сахар, Array#|
- это метод, который вы можете увидеть в документах для здесь .Как сказано в документации:
Set Union - возвращает новый массив, объединяя ary с other_ary, исключая любые дубликаты и сохраняя порядок из исходного массива
Когда блокРедакция принимает эту конкретную форму (вызов одного метода в memo, передача элемента итерации в качестве аргумента), вы можете опустить блок и просто передать имя метода.