【问题标题】:Method taking an argument or a block采用参数或块的方法
【发布时间】:2015-02-23 22:04:38
【问题描述】:

是否可以编写一个根据输入类型采取不同行动的方法?我正在尝试写一个这样的行为

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

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

【问题讨论】:

    标签: ruby methods block


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 1970-01-01
      • 2011-01-14
      • 2016-02-04
      • 1970-01-01
      • 2014-03-11
      • 2021-11-11
      • 2010-11-03
      • 2020-06-30
      相关资源
      最近更新 更多