ruby - 调用super的super方法

标签 ruby

是否可以在重写方法中执行类似 super.super 的操作?也就是绕过直系父辈的super,调用“祖 parent ”的super?

最佳答案

不推荐这样做,但是您想要的可能像这样:

grandparent = self.class.superclass.superclass
meth = grandparent.instance_method(:the_method)
meth.bind(self).call

它的工作原理是首先获取祖 parent 类,然后对其调用 instance_method 以获得代表祖 parent 版本的 the_methodUnboundMethod。然后它使用 UnboundMethod#bindMethod#call 在当前对象上调用祖 parent 的方法。

关于ruby - 调用super的super方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4557304/

相关文章:

ruby - 在 Ubuntu 11.10 上安装 linkparser 时出现 fatal error

使用一些通用方法的 Ruby 模块 :where to put this method?

ruby-on-rails - 你如何让 rmagick 在带有 rails 3.1 和 carrierwave 的 Windows 7 64 位上工作?

ruby - 如何断言超链接指向给定的 URL?

ruby - 嵌套形式多对多关系不允许的参数 Rails 4

ruby - 如果 gem 失败且不需要,则允许 bundle 程序继续

ruby - rvm 系统安装,bin 未正确符号链接(symbolic link)

ruby-on-rails - 找到网络应用客户端的操作系统

ruby - 如何将文件从一台服务器复制到另一台服务器?

ruby-on-rails - Rails 允许用户设置默认值