Передача блока в качестве аргумента метода умирает в Ruby 1.9.3 - PullRequest
2 голосов
/ 01 апреля 2012

Итак, этот шаблон:

def foo(&block)
  block.call
end

foo lambda { puts 'hi' }

В результате получается:

wrong number of arguments (1 for 0) (ArgumentError)

Использование Ruby 1.9.3.

Am Iделает это неправильно?

1 Ответ

6 голосов
/ 01 апреля 2012

Вам не нужна лямбда, только блок:

def foo(&block)
  block.call
end

foo { puts 'hi' }

Если вы хотите передать процедуру, используйте обычный параметр:

def foo(ohai)
  ohai.call
end

foo lambda { puts 'hi' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...