Блоки в Ruby, ошибка: неверное количество аргументов - PullRequest
0 голосов
/ 14 июня 2019
def power(a,b)
    puts" #{a}**#{b} is"
    yield a,b
    puts"Program Terminating..."
end

power {|a,b| printf "#{a**b}" }

power(2,3)

Ожидаемый результат должен быть 8.

Сообщение об ошибке:

`power ': # неверное количество аргументов (задано 0, ожидается 2) (ArgumentError)

Я хочу использовать блок с несколькими параметрами, который вызывается из метода, который принимает два аргумента.

1 Ответ

8 голосов
/ 14 июня 2019

У вас, по сути, есть два звонка на power без какой-либо причины (я дикий догадывался, что вы ожидали карри там, но дело не в том, как карри делается в ruby.)

Первый вызов power с блоком не передает ни одного аргумента, в то время как оба обычных аргумента являются обязательными. Должен быть один вызов, передающий аргументы блока и :

power(2, 3) { |a, b| print "#{a**b}" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...