Передача блока в метод - Ruby [duplicate]

На этот вопрос уже есть ответ:

лок @Code передается каждой работе в скобках, но не с помощью «do» - «end» (ruby) 3 ответа

У меня небольшой вопрос по прохождению блока.

def a_method(a, b)
  a + yield(a, b)
end

Это отлично работает.

k = a_method(1, 2) do |x, y| 
  (x + y) * 3 
end
puts k

Но это не сработает.

puts a_method(1, 2) do |x, y| 
  (x + y) * 3 
end
# LocalJumpError: no block given (yield)

Кто-нибудь может мне это объяснить?

Благодарность. Пример взят из Metaprogramming Ruby Паоло Перротта. Отличная книга.

Ответы на вопрос(2)

Ваш ответ на вопрос