Начните здесь, а затем просмотрите все методы, которые принимают блоки.
http://ruby -doc.org / ядро-2.3.3 / Enumerable.html # метод-я-инъекционные
Это блок, который смущает вас или почему у вас есть значение в методе?
Хороший вопрос, хотя. Какой там операторный метод?
result.+
С чего все начинается?
#inject(0)
Можем ли мы сделать это?
[1, 2, 3, 4].inject(0) { |result, element| result.+ element }
Это работает?
[1, 2, 3, 4].inject() { |result = 0, element| result.+ element }
Вы видите, я основываюсь на идее, что она просто суммирует все элементы массива и дает число в записке, которую вы видите в документах.
Вы всегда можете сделать это
[1, 2, 3, 4].each { |element| p element }
чтобы увидеть, что перечислимый массив проходит итерацию. Это основная идея.
Это просто, что инъекция или сокращение дают вам памятку или аккумулятор, который отправляется.
Мы могли бы попытаться получить результат
[1, 2, 3, 4].each { |result = 0, element| result + element }
но ничего не возвращается, так что это действует так же, как и раньше
[1, 2, 3, 4].each { |result = 0, element| p result + element }
в блоке инспектора элементов.