Как передать параметры процессу при вызове его методом?

proc = Proc.new do |name|
  puts "Thank you #{name}!"
end
def thank
  yield
end

proc.call # output nothing, just fine
proc.call('God') # => Thank you God!

thank &proc # output nothing, too. Fine;
thank &proc('God') # Error!
thank &proc.call('God') # Error!
thank proc.call('God') # Error!
# So, what should I do if I have to pass the 'God' to the proc and use the 'thank' method at the same time ?

Спасибо :)

8
задан iain 3 April 2019 в 05:30
поделиться

2 ответа

Я думаю, что лучший способ:

def thank name
  yield name if block_given?
end
13
ответ дан 5 December 2019 в 07:10
поделиться
def thank(arg, &block)
  yield arg
end

proc = Proc.new do|name|
   puts "Thank you #{name}"
end

Затем вы можете сделать:

thank("God", &proc)
8
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: