【发布时间】:2015-02-23 22:04:38
【问题描述】:
是否可以编写一个根据输入类型采取不同行动的方法?我正在尝试写一个这样的行为
hello("derick")
#=> "hello derick!"
hello do
"derick"
end
#=>"<hello>'derick'<hello/>"
【问题讨论】:
是否可以编写一个根据输入类型采取不同行动的方法?我正在尝试写一个这样的行为
hello("derick")
#=> "hello derick!"
hello do
"derick"
end
#=>"<hello>'derick'<hello/>"
【问题讨论】:
是的,在 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
【讨论】: