ruby - block 和对象

标签 ruby inheritance super ruby-1.9.3

我有一个这样的对象

class SomeObject
  def initialize &block
    # do something
  end
end

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

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

最佳答案

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

如果你不想传递那个 block ,你可以只传递一个什么也不做的 block ,尽管这不是完全一样的东西(例如,如果方法根据 block_given? 改变它的行为)

看来

super(&nil)

是一种完全不传递 block 给 super 的方法,尽管我在 ruby​​ 规范中找不到它。

关于ruby - block 和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100673/

相关文章:

mysql + ruby​​ = 噩梦

inheritance - f# 类型提供程序继承

Ruby:在一行中返回带有 "\n"的字符串连接

c++ - 层次结构中类的编译器错误

java - 导入或实现可重用的静态数据?

java - 我如何访问 super-super 类,在 Java 中? [里面的小例子]

python - super(MyObject, self).__init__() 在类 MyObject __init__() 函数中做什么?

PyCharm 中的 python3 super() 新样式自动完成

ruby-on-rails - 做 x.present 的更短方式? ? x : z

ruby-on-rails - 将 i18n gem 与 View 文件一起使用时出现问题