Определить, является ли параметр/переменная лямбдой ( "is_a?" )?
Как проверить, является ли данный параметр лямбдой?
def method(parameter)
if ???
puts "We got lambda"
parameter.call
else
puts "I did not get a block"
end
end
method(lambda { 1 })
method(1)
Ответ 1
Блок не является лямбдой. Чтобы увидеть, есть ли блок, используйте block_given?.
В любом случае я бы использовал "отвечает на вызов" тогда и только тогда, когда мне действительно нужна эта конструкция, которую я бы постарался избежать. (Определите контракт и сделайте вызывающего абонента ответственным за его правильное использование!)