加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

可以&阻止在ruby中可选吗?

发布时间:2020-12-17 03:56:30 所属栏目:百科 来源:网络整理
导读:这可能吗?例如,如果我有: module Sample def self.method_name(var,block) if var == 6 call_other_method(var,block) else call_other_method(var) end end def self.call_other_method(var,block) # do something with var and block,assuming block is
这可能吗?例如,如果我有:

module Sample
  def self.method_name(var,&block)
    if var == 6
      call_other_method(var,&block)
    else
      call_other_method(var)
    end
  end

  def self.call_other_method(var,&block)
    # do something with var and block,assuming block is passed to us.
  end
end

因此,在上面的示例中,如果调用Sample.method_name并将其传递给3和块,则不会使用该块,因为输入与条件不匹配.但这可能吗?你可以选择& block吗?

我做了一个假设,根据其他堆栈问题你可以将一个方法从一个方法传递到另一个方法,如上所示,如果这是错误的请填写我.

解决方法

当然.看看block_given?在ruby文档中.

http://ruby-doc.org/core-2.2.1/Kernel.html#method-i-block_given-3F

module Sample
  def self.method_name(var,&block)
    puts "calling other method with var = #{var}"
    block.call if block_given?
    puts "finished other method with var = #{var}"
  end
end

运行时输出为:

calling other method with var = 6
this is my block
finished other method with var = 6
calling other method with var = 3
finished other method with var = 3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读