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

ruby – 块和对象

发布时间:2020-12-16 23:05:37 所属栏目:百科 来源:网络整理
导读:我有一个像这样的对象 class SomeObject def initialize block # do something endendclass AnotherObject SomeObject def initalize block super # do something with block endend 当在AnotherObject中调用super时,该块似乎被传递给SomeObject.这是正确的
我有一个像这样的对象
class SomeObject
  def initialize &block
    # do something
  end
end

class AnotherObject < SomeObject
  def initalize &block
    super
    # do something with block
  end
end

当在AnotherObject中调用super时,该块似乎被传递给SomeObject.这是正确的行为吗?

解决方法

根据 rubyspec,这是正确的行为,即使你将显式参数传递给super(即super(‘foo’))

如果你不想传递那个块,你可以传递一个什么也不做的块,虽然这不是一回事(例如,如果方法根据block_given改变它的行为?)

看起来

super(&nil)

虽然我在ruby规范中找不到这个,但是这是一种完全不通过块的方法.

(编辑:李大同)

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

    推荐文章
      热点阅读