我用super来初始化父类,但我看不到任何从子类方法调用父类的方法.

我知道PHP和其他语言确实有这个功能,但在Ruby中找不到一个很好的方法.

在这种情况下人们会怎么做?

推荐答案

如果方法是相同的名称,也就是说,你覆盖了一个方法,你可以简单地使用super.否则,您可以使用alias_method或绑定.

class Parent
  def method
  end
end

class Child < Parent
  alias_method :parent_method, :method
  def method
    super
  end

  def other_method
    parent_method
    #OR
    Parent.instance_method(:method).bind(self).call
  end
end

Ruby相关问答推荐

使用 Drive API 创建空文件

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

使用 RSpec 存根 Time.now

如果 Java 人go Scala,C# go F#,那么 Ruby 人go 哪里寻求函数式?

Integer(value) 和 value.to_i 之间的区别

拆分 Ruby 字符串时如何保留分隔符?

Broken pipe (Errno::EPIPE)

Rails - create and create!

如何通过匹配文本来 Select node

将哈希转换为 struct

在 Ruby 中定义 [方括号] 方法是如何工作的?

为什么 Ruby 的 Date 类会自动加载,但 DateTime 不会?

Ruby中的file.open、open和IO.foreach,有什么区别?

Ruby 1.9:如何正确大写和小写多字节字符串?

区分一个Ruby字符串或数组

如何使用 RVM 更新 Ruby 解释器?

rbenv install --list 不列出 2.1.2 版本

使用 Liquid 标记在 Jekyll 中获取今天的日期

如何从字符串创建 Ruby 日期对象?

判断文件名是文件夹还是文件