采用参数或块的方法

时间:2015-02-23 22:04:39

标签: ruby methods block

是否可以根据输入类型编写一种不同的方法?我试图写一个像这样的行为

hello("derick")
#=> "hello derick!"

hello do
  "derick"
end
#=>"<hello>'derick'<hello/>"

1 个答案:

答案 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