在没有继承的情况下,如何重写类方法并从新方法中调用原始方法?

2023-12-28

我找到了一个成功覆盖的来源Time.strftime像这样:

class Time
  alias :old_strftime :strftime
  def strftime
    #do something
    old_strftime
  end
end

问题是,strftime是一个实例方法。我需要覆盖Time.now- 类方法 - 任何调用者都可以获得我的新方法,而新方法仍然调用原始方法.now方法。我看过alias_method但没有取得成功。


有时这有点难以理解,但您需要打开“eigenclass”,它是与特定类对象关联的单例。其语法是 class

class Time
  alias :old_strftime :strftime

  def strftime
    puts "got here"
    old_strftime
  end
end

class Time
  class << self
    alias :old_now :now
    def now
      puts "got here too"
      old_now
    end
  end
end

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

在没有继承的情况下,如何重写类方法并从新方法中调用原始方法? 的相关文章

  • 声明实例变量迭代哈希!

    我想做以下事情 我想声明一个迭代字典的类的实例变量 假设我有这个哈希 hash key1 gt value1 key2 gt value2 key3 gt value3 我想将每个键作为类的实例变量 我想知道我是否可以声明迭代该哈希的变量
  • Rails Heroku 服务器回形针 Amazon S3 - AWS::S3::Errors::RequestTimeout

    当我使用附加图像保存 konkurrencer 模型时 我在 Heroku 上收到错误 但在本地服务器上却没有 我的 Heroku 日志 36m2012 04 01T17 45 37 00 00 app web 1 0m Started P
  • setInterval() 相当于 ruby

    在 JavaScript 中你可以这样做 setInterval func delay 我似乎无法在谷歌上找到任何我真正想要的东西 红宝石有等效的吗 提前致谢 你可以做类似的事情 Thread new do loop do sleep de
  • 使用 Ruby SDK 将文件上传到 Amazon S3

    我正在尝试上传文件 一个简单的 hello txt 我正在关注文档 但无法将其上传到我的存储桶 START AWS CLIENT s3 Aws S3 Resource new bucket s3 bucket BUCKET NAME beg
  • 使用 mongodb/mongoid 排序时,有没有办法将所有 nil 值放在最后?

    除了问题中已有的内容之外 确实没什么可说的 使用 monoid People asc age 我首先得到零值 有没有办法总是返回nillast 或者告诉 mongodb 将 nil 视为非常高 与回答的完全一样sql中同样的问题在这里 ht
  • 使 diff-lcs 的输出可读

    我正在使用 diff lcs gem 输出两个 html 内容体之间的差异 这是示例内容 版本一 p Paragraph one Sentence one p p Paragraph two Another sentence p p Par
  • 无主键的 ActiveRecord 模型

    我有一个 ActiveRecord 模型GPA没有主键 class GPA lt ActiveRecord Base end 当我尝试打电话时GPA first to json I get TypeError false is not a
  • ruby 无法复制 Fixnum

    我有一些这样的代码 ssh files id rsa pub id rsa ssh files each with index do item index ssh files index generate ssh path creator
  • java中如何重写一个方法然后调用超类方法

    我试图重写我的 java 子类中的超类中的方法 然后从超类中调用重写的方法 这是正确的方法吗 我想要重写的超类中的方法称为describe public static void describe Item describe Use the
  • 使用 gem 添加辅助方法

    我找到了很多有关添加表单辅助方法的信息 请参阅我的其他问题之一 但我找不到有关添加辅助方法的任何信息 就好像它们是在application helper rb 我尝试过复制application helper rb从 Rails 应用程序到
  • 无||假与假||红宝石中的零

    nil false回报false and false nil回报nil 有人对此有解释吗 在 Ruby 中 一切都是表达式 表达式将返回其中计算的最后一个值 对于您的两个示例 左侧 表达式的计算结果为假值 因此 Ruby 然后计算右侧并返回
  • 使用正则表达式检查至少 8 位数字的字符串

    我的正则表达式如下 d s 12 这将允许数字 空格 但我想确保字符串至少包含 8 位数字 一些允许的字符串如下 1323 24 233 24243434 43 43435 4554345 434 它不应该允许这样的字符串 1213 232
  • 安装heroku toolbelt后出现Ruby错误

    我正在 win 7 32 位系统上使用 Heroku 但我没有管理员权限 我已经下载并安装了heroku工具带如下http community webfaction com questions 11803 heroku toolbelt h
  • 创建具有子级别的类属性

    我一直在读这个topic https excelmacromastery com vba class modules A Quick Guide to the VBA Class Module关于如何使用类模块 我的目标是提高代码性能和可读
  • 接受 05/05/1999 和 5/5/1999 等的日期时间解析

    有没有一种简单的方法来解析可能为 MM DD yyyy M D yyyy 或某种组合的日期 即 在一位数字的日期或月份之前 零是可选的 要手动执行此操作 可以使用 String dateFields dateString split int
  • ruby require 问题(与 $LOAD_PATH 有关)

    我正在尝试使用我刚刚安装的 gem 通过sudo gem install excelsior 像这样 需要 红宝石 要求 精益求精 这在 irb 中工作得很好 但是当我将完全相同的代码粘贴到 rb 文件中并尝试使用 ruby 运行它时 我得
  • 如何在 Ubuntu 中使用 gems?

    我最近升级到 Ubuntu 9 04 但在使用 gems 时遇到问题 我使用 apt get 安装了 Ruby Rubygems 和 Rails 这rails命令确实有效 然后我安装了 capistrano 和其他 gem 例如 herok
  • Pickle 动态参数化子类

    我有一个通常存储腌制类类型的系统 我希望能够以相同的方式保存动态参数化的类 但我不能 因为我在尝试腌制一个未全局找到的类 未在简单代码中定义 时收到 PicklingError 我的问题可以建模为以下示例代码 class Base obje
  • 登录西纳特拉?

    我无法弄清楚如何使用 Sinatra 记录消息 我不想记录请求 而是在我的应用程序中的某些点记录自定义消息 例如 当获取 URL 时 我想记录 Fetching url 这就是我想要的 指定日志级别的能力 例如 logger info Fe
  • Rails apns 用于向 Apple ipad 推送通知 - 使用哪个 gem?

    我希望从 Rails 3 0 3 应用程序向苹果推送通知 我发现了各种 apns ish 宝石 包括 apns on rails 其中一些似乎有点旧 1 或 2 年 并且非常不清楚 2012 年使用的 当前 是什么 根据我的标准 您能推荐使

随机推荐

  • Laravel - Jenssegers MongoDB 嵌套数组更新不起作用

    有人可以指出我的代码有什么问题吗 我正在尝试通过 Laravel Jenssegers 更新 MongoDB 中的嵌套数组 这是我的代码 update status Journal where id 5cd10b325586e9122761
  • 使用 mongoose 创建动态模式

    我对 Node js 和 Mongoose 模块非常陌生 我正在尝试创建一个架构 其中有一些必填字段 而其他一些字段可以是动态的 我用过strict to false 我的代码如下所示 var mongoose require mongoo
  • hibernate中缺少@Temporal注释

    如果我们使用怎么办 Column name birth date nullable false length 19 public Date getBirthDate return this birthDate 代替 Temporal Tem
  • 试图摆脱空数据字段(一种空基优化?)

    我想要一个会计 仪表层 如果需要的话 它应该计算对象实例上的许多不同的 事件 事件 可以是发生的任何事情 例如 在一天结束时 您应该能够判断 文件已写入 5400 次 或者 锁拥塞 52 456 次 不拥塞 12 311 次 通过旋转获取
  • 在Python中绘制图表

    我是 Python 新手 正在尝试根据找到的 pyODE 教程绘制图表here http pyode sourceforge net tutorials tutorial1 html 我在用着pylab用于绘图 下面是代码的主要部分 add
  • Chrome 扩展程序无需单击图标即可加载脚本

    大家好 我想加载脚本 无论用户是否单击我的扩展图标 这是我的扩展 它工作得很好 但我希望它能够工作 而不需要用户单击图标来加载脚本 这是代码 name Injecta version 0 0 1 manifest version 2 des
  • 如何在 shell 脚本中缩小 JSON?

    我一直在寻找一种在 bash 控制台中丑化一些 JSON 的方法 这有助于随后在另一个命令中使用它 例如 将 json 内联传递给httpie Giving foo lorem bar ipsum 我想获得 foo lorem bar ip
  • 为什么 scala 值 class#toString 包含案例类信息?

    价值类别 http docs scala lang org overviews core value classes html可用于实现类型安全 而无需拆箱的开销 我的印象是 在运行时 此类类型 类将 不存在 被视为简单类型 例如 值类ca
  • nodeJs巨大数组处理抛出RangeError:超出最大调用堆栈大小

    这是处理大量条目的代码的一部分 最初它与文件系统一起工作并对文件进行一些操作 有什么好的方法可以绕过限制并防止抛出RangeError 超出最大调用堆栈大小 目前它允许我迭代大约 3000 个项目 var async require asy
  • TensorFlow:dataset.train.next_batch 是如何定义的?

    我正在尝试学习 TensorFlow 并研究以下示例 https github com aymericdamien TensorFlow Examples blob master notebooks 3 NeuralNetworks aut
  • 在 .NET 中获取默认 Windows 系统颜色

    我正在编写一个自定义按钮控件作为 即将成为 免费控件套件的一部分 并且我希望将我的 默认 控件颜色基于相应的 Windows 系统颜色 因此 在网上查找 默认 Windows 系统颜色 后 我找不到有关 Windows 控件 尤其是按钮控件
  • 如何在 iOS 上旋转自定义启动屏幕?

    我的启动屏幕可以正常工作 但我的应用程序可以在横向模式下运行 并且启动屏幕以默认的纵向模式显示 如何启动应用程序 以便启动屏幕像我的应用程序一样在横向模式之间旋转 我正在使用以下代码 BOOL shouldAutorotateToInter
  • 使用 MVVM 分配数据上下文的最佳方法是什么?

    我一直在寻找设置数据上下文属性的最佳方法 我找到了三种方法 在视图上分配数据上下文 在 XAML 或隐藏代码上 通过构造函数在 ViewModel 上分配数据上下文 使用一些配置来获取视图和视图模型引用 并通过一些基础结构类在运行时绑定数据
  • 滚动到 javascript 或 jquery 中具有特定 id 的 html 元素

    我有分配了 id 的 html 元素 现在我想滚动到这些元素 我看到 jQuery 有一个scrollTop 它接受一个整数值 我如何轻松地将带有 id 的特定 html 元素滚动到顶部 理想情况下 动画精美流畅 快速搜索显示了许多滚动插件
  • 如何使 ReactJS 应用程序在 AWS 上处于活动/可见状态

    我在AWS上开发了一个reactJS项目 前端 它有来自heroku的RESTFUL API 它们完全分离 即前端和后端 我已成功将文件上传到 S3 并激活了我的 CloudFront 发行版 但我无法真正找出问题所在 因为当我点击从域名生
  • 如何在 Bash 脚本中添加数字?

    我有这个 Bash 脚本 但在第 16 行遇到了问题 我如何获取第 15 行的先前结果并添加 它到第 16 行的变量 bin bash num 0 metab 0 for i 1 i lt 2 i do for j in ls output
  • Xcode应用程序运行问题

    我刚刚将 iPhone 5 更新至 iOS 版本 10 1 当我尝试在设备上运行我正在开发的应用程序时 我从 Xcode 收到以下错误 无法找到设备支持文件 这款 iPhone 5 型号 A1429 运行的是 iOS 10 1 14B72
  • 如何在参数化后运行拆卸功能/夹具

    我正在尝试运行拆卸函数 夹具来对一个测试用例进行整个参数化 所以我想在我的 conftest py 文件中有这样的东西 pytest fixture autouse True scope parametrization def parame
  • laravel eloquent 中的一对多关系

    早上好 我在 Eloquent 中的模型关系方面遇到了一些麻烦 我需要使用中间表链接这些文章的文章和图像 在中间表中 我想添加文章和图像的 id 并且我想检索属于一篇文章的所有图像 管理关系的最佳方法是什么 提前致谢 您不需要使用数据透视表
  • 在没有继承的情况下,如何重写类方法并从新方法中调用原始方法?

    我找到了一个成功覆盖的来源Time strftime像这样 class Time alias old strftime strftime def strftime do something old strftime end end 问题是