Чи можна написати метод, який діє по-різному залежно від типу вводу? Я намагаюся написати такий, що діє так
hello("derick")
#=> "hello derick!"
hello do
"derick"
end
#=>"<hello>"derick"<hello/>"
Відповіді:
1 для відповіді № 1Так, це можливо в Ruby. Використовуючи block_given?
Ви можете перевірити, чи передано блок, і виконати блок, інакше повернути будь-який інший результат.
def hello(s=nil)
if block_given?
"<hello>"#{yield}"</hello>"
else
"hello #{s}"
end
end
puts hello("derick!")
puts (hello do
"derick"
end)
HTH