调用超类的超类方法?

2024-01-01

我怎样才能让孩子忽略父母认为有趣的事情而直接去祖父母认为有趣的事情呢?

孩子仍然继承自父母,但它只是不同意一些方法。

调用超类的超类的方法?

另外,如果我处于孩子不同意父母的意见但同意父母的父母的情况,这是否被认为是糟糕的设计?

class Grandparent  
  def fun  
    #do stuff  
  end  
end

class Parent < Grandparent
  def fun
     super
     #parent does some stuff
  end

  def new_business
     #unrelated to my parent
  end
end

class Child < Parent  
  def fun
     super
     #child also does some stuff
  end

  def inherit_new_business
      new_business
      #stuff 
  end  
end

在 Ruby 中,通过组合而不是继承来获得这种行为通常更容易。为了实现这一点Modules包含您希望类具有的特定行为。

但如果你绝对必须使用继承,你可以这样做:

class Child < Parent
  def fun
    GrandParent.instance_method(:fun).bind(self).call
    # fun child stuff
  end
end

这将完全按照它所说的进行。获取实例方法fun从 GrandParent 类中,将其附加到当前实例对象self并调用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用超类的超类方法? 的相关文章

  • 从类内部调用属性访问器方法[重复]

    这个问题在这里已经有答案了 我正在尝试调用我的类属性编写器之一 但由于某种原因它永远不会被调用 下面是一些代码 可以使这一点更清楚 class Test attr reader test def test val puts Called t
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • ruby 的 String .hash 方法如何工作?

    我只是红宝石的新手 我见过一个字符串方法 String hash 例如 在irb 我试过了 gt gt mgpyone hash returns gt 144611910 这个方法是如何工作的 The hash方法是为所有对象定义的 看文档
  • 如何在 gem 的示例脚本中使用 pry-byebug ?

    我正在制作我的第一个 gem 它不是 Rails 应用程序 而是一个带有一些 AI 的 tic tac toe 库 这样我就可以与一个永远不会输的计算机对手比赛 并在可能的情况下强行获胜 现在我正在尝试调试人工智能中的攻击策略 但我似乎无法
  • Ruby 可选参数和多个参数

    我试图将方法的第一个参数设置为可选 后跟任意数量的参数 例如 def dothis value 0 args 我遇到的问题是 这似乎实际上不可能 当我打电话时dothis hey how are you good 我希望它将值设置为默认值
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 为什么 rand() 总是返回相同的数字?

    我在用 兰特 200 在我的 Rails 应用程序中 当我在控制台中运行它时 它总是返回随机数 但如果我在应用程序行中使用它 index rand 200 索引总是相同的号码 为什么会这样以及如何克服这个问题 简单的伪随机数生成器实际上生成
  • class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

    我正在读Module文档 但似乎无法理解它们的差异以及应该在哪里使用 怎么样eval不同于exec 我将回答比你的问题更多的内容 包括instance eval exec 在你的问题中 所有变体 instance module class
  • 在 mac os Sierra 上,卡在“设置 CocoaPods 主存储库”上

    转移到 mac os sierra 后 我完全格式化了我的 mac 现在每次运行时我都面临安装 cocoapods 的问题sudo gem install cocoapods pre一切都安装得很好 当我尝试安装 Pod 时 终端堆栈打开S
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • 如何在initialize()中使用define_method

    尝试使用define method inside initialize但得到未定义的方法define method 我究竟做错了什么 class C def initialize n define method n puts some me
  • 如何全局忽略 UTF-8 字符串中的无效字节序列?

    我有一个 Rails 应用程序从 Rails 版本 1 以来的迁移中幸存下来 我想忽略all其上的无效字节序列 以保持向后兼容性 我不知道输入编码 示例 gt Men xFC split n ArgumentError invalid by
  • Ruby on Rails 离线编程

    我将离开互联网几周 但仍然想完成一个项目 我应该采取哪些步骤来确保在断开连接时能够访问我需要的内容 ruby 和 ROR 离线时 以下内容很难获得 gems docs Rails 专家博客 堆栈溢出 so gem 安装尽可能多 下载所有的轨
  • 一对一的DataMapper关联

    我对 DataMapper 非常陌生 我正在尝试为以下场景创建模型 我有许多用户 有用户名 密码等 他们也可以是玩家或裁判员或两者兼而有之 因此单表继承不是一个选项 基本模型是 class User include DataMapper R
  • 何时使用node.js、sinatra、rails? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这 3 种语言 框架的最佳用途是什么 混合所有 或 2 个 有用吗 如果您正在构建一个完整的 Web 应用程序 您可能应该使用 Rails 因为
  • 在 ruby​​ 中创建登录会话时理解“current_user”概念

    我正在阅读很棒的 Michael Hartl 教程来构建 ruby 应用程序here http ruby railstutorial org chapters sign in sign out sec 3acurrent user 我试图理
  • 为什么包含此模块不会覆盖动态生成的方法?

    我试图通过包含一个模块来覆盖动态生成的方法 在下面的示例中 Ripple 关联添加了rows 方法表 我想调用该方法 但之后还要做一些额外的事情 我创建了一个模块来重写该方法 认为该模块的row 可以打电话super使用现有的方法 clas
  • ruby中如何将binary32转换为float

    我有一个以 IEEE 32 编码的 binary32 如何将 0x0040EDC2 转换为 118 625 我尝试了几种打包和解包选项 但没有成功 IEEE http en wikipedia org wiki Single precisi
  • 如何使 Yard `@macro` 应用于多个文件

    如果我有在one file下列 module Something class Resource Defines a new property param String name the property name param Class t

随机推荐

  • 显示最后一次 git 提交评论

    通常在提交期间 git commit m 我希望阅读我的最后评论以记住我取得的进展 有没有一种简单的方法可以通过命令行直接访问最后的提交消息 我使用的是 Windows git show 是输入速度最快的 但也会显示差异 git log 1
  • 创建新页面时,不考虑 css

    我能够根据用户输入自动创建一个新网页 但只有一个问题 CSS 对此不起作用 我知道如何将 css 文件附加到 HTML 文件 但这一次 它不起作用 为了帮助您直观地了解这一点 这是我到目前为止的代码 HTML lt content for
  • OSX cocoa 应用程序 - 获取 safari 选项卡信息

    我想知道是否可以以编程方式从 safari 获取任何选项卡 窗口信息 有图书馆可以做吗 我不喜欢 applescript 因为我发现 我想知道它在 Cocoa 框架中是否可行以及如何可行 你可以这样做脚本桥 https developer
  • Android Studio 添加 Adob​​e Creative SDK 时出错

    这是我的构建 gradle文件 我已关注this https creativesdk adobe com 教程 repositories mavenCentral jcenter mavenLocal maven url project r
  • SpringBoot Thymeleaf 序数

    我读过一些好文章 例如this one https stackoverflow com q 4011075 1756598解释了当给定一个时接收序数的方法int 现在 我有一个 LocalDate 对象 我可以使用任何以下方式格式化我的日期
  • 无法在 Internet Explorer 10 上加载 Google Cloud Endpoints

    我正在开发一个使用Google JavaScript 客户端库 https developers google com api client library javascript reference referencedocs加载一些通过以
  • .Net Core 是否支持每个环境的用户机密?

    假设我有指定的开发环境的连接字符串appsettings Development json以及中指定的暂存环境的连接字符串appsettings Staging json 要在开发和暂存之间切换 我需要做的就是导航到项目属性中的 Visua
  • Maven 在集成测试阶段运行 jetty

    I use failsafe插入 所以当我输入时mvn failsafe integration test它是我的集成测试的主角 这很棒 但我想要我的jetty server开始于pre integration那么阶段 我应该怎么办 我不想
  • Python:为什么存在 int.numerator 和 int.denominator?

    int numerator and int denominator对我来说是个谜 help int numerator states 有理数最低项的分子 但据我所知 int不是有理数 那么为什么会存在这些属性呢 See http docs
  • 如何获取 gstreamer 插件 - Windows

    我现在从 gstreamer freedesktop org 安装了 gstreamer 1 0 并进行了他们的教程 http gstreamer freedesktop org data doc gstreamer head manual
  • 当我们已经有一阶逻辑时,为什么还需要 PDDL?

    这可能是一个完全天真的问题 但我有兴趣知道具体原因 最初为什么要开发 PDDL 为什么我们不能使用一阶逻辑进行推理 解决问题的效率 使用更具体的语言来表达您的问题可以应用更具体的算法来解决问题 从理论上来看 FOL 是不可判定的 而大多数
  • Android Activity ClassNotFoundException - 尝试了一切

    我刚刚将应用程序重构为框架库和应用程序 但现在当我尝试在模拟器中启动应用程序时 我收到以下错误堆栈跟踪 06 02 18 22 35 529 E AndroidRuntime 586 FATAL EXCEPTION main 06 02 1
  • 如何将链接延伸到整个单元格?

    我有一个表 其中包含可以单击以编辑行的链接 锚点 我希望将这些链接拉伸到包含单元格的整个宽度和高度 我已经将它们设置为display block 所以它们有完整的宽度 问题是 我很难使用 CSS 将它们设置为全高 请参阅我的示例小提琴 ht
  • User.config 损坏

    因此 我做了相当多的研究来试图解决这个问题 但似乎无法 1 重现该问题 但更重要的是 2 找到一个最新的解决方案来修复它 这种情况在两周内已经发生过两次 其中 user config 文件会随机损坏 例如 XML 文件的块会丢失 从而导致应
  • 如何推送(使用 libgit2)

    如何使用 libgit2 进行推送 喜欢git push origin master在控制台上 我想使用C版本 克隆 打开 添加文件到索引并像魅力一样提交工作 请参阅code http pastebin com ta9EjMBn test
  • 聚焦时的 UWP 文本框背景

    由于某种原因 没有简单的方法可以将 TextBox 的焦点背景从默认的白色更改为白色 它工作的唯一方法 我需要它是深色或透明的 是创建自定义文本框 粘贴大量代码行 来自 然后编辑两行
  • 使用 Selenium 突出显示文本

    我有一个上下文敏感菜单 需要突出显示文本才能正常工作 但是 我在使用 Selenium 选择文本时遇到问题 我首先找到我正在寻找的 WebElement 然后尝试使用不同的可用鼠标事件与其进行交互 When I m trying to se
  • Android 上的远程调试 Chrome 问题

    我在 Android 设备 运行 Android 版本 4 0 4 的 LG Nitro 上使用 Chrome 开发人员工具的远程调试功能时遇到问题 几天前它工作得很好 但现在我的设备从未出现在 about inspect 页面上 我已关注
  • 在 Rails 中检查和验证非模型参数的位置

    在 Ruby On Rails 中 您在哪里检查不是模型属性的 URL 参数 例如 page per page sort mode 在控制器中还是在模型中 例如 当执行更复杂的数据库查询时 您会检查参数并可能在控制器中设置默认值 然后执行以
  • 调用超类的超类方法?

    我怎样才能让孩子忽略父母认为有趣的事情而直接去祖父母认为有趣的事情呢 孩子仍然继承自父母 但它只是不同意一些方法 调用超类的超类的方法 另外 如果我处于孩子不同意父母的意见但同意父母的父母的情况 这是否被认为是糟糕的设计 class Gra