是否可以根据输入类型编写一种不同的方法?我试图写一个像这样的行为
hello("derick")
#=> "hello derick!"
hello do
"derick"
end
#=>"<hello>'derick'<hello/>"
答案 0 :(得分: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