У вас есть, вы просто этого не видите:
WHAT_AM_I_PASSING = ->(var) { var.inspect }
answers = {}
answers.fetch(:x, &WHAT_AM_I_PASSING)
# => ":x"
Блок Hash#fetch
содержит аргумент, ключ, который вы не нашли.Вы можете либо принять аргумент в своей лямбде и просто проигнорировать его, либо сделать его процедурой:
DEFAULT_BLOCK = proc { 'block executed' }
answers.fetch(:x, &DEFAULT_BLOCK)
# => "block executed"
Причина, по которой работает процесс, заключается в том, что лямбда-выражения проверяют, что во время выполнения процедур было указано правильное количество аргументов.нет.Метод fetch
вызывает proc / lambda с одним аргументом (ключом).