在另一个模块中扩展 Ruby 模块,包括模块方法

2024-05-05

每当我尝试扩展 ruby​​ 模块时,我都会丢失模块方法。 include 和extend 都不会执行此操作。考虑一下片段:

module A 
  def self.say_hi
    puts "hi"
  end
end

module B 
  include A
end

B.say_hi  #undefined_method

无论 B 包含还是扩展 A,say_hi 都不会被定义。

有什么办法可以完成这样的事情吗?


如果您是作者module A并且经常需要这个,你可以像这样重新创作 A:

module A 
  module ClassMethods
    def say_hi
      puts "hi"
    end
  end
  extend ClassMethods
  def self.included( other )
    other.extend( ClassMethods )
  end
end

module B 
  include A
end

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

在另一个模块中扩展 Ruby 模块,包括模块方法 的相关文章

随机推荐

  • 如何查找冻结模型的输入和输出节点

    我想使用张量流optimize for inference py来自模型动物园的冷冻模型的脚本 ssd mobilenet v1 coco 如何查找 确定模型的输入名称和输出名称 雇用张量板生成的图的版本 https i stack img
  • 三次贝塞尔曲线逆 GetPoint 方程:float for Vector <=> Vector for float

    给定结果值和四个点是否可以取回 float t 如果是这样 怎么办 public static Vector3 GetPoint Vector3 p0 Vector3 p1 Vector3 p2 Vector3 p3 float t t M
  • 如何在代码中访问 DataGridCell 的数据对象?

    基本上 我已经绑定了数据网格 使其类似于科目时间表 每行代表一个学期的科目 该学期内的每个单元格代表一个科目 我现在尝试添加拖放功能 以便您可以将其他主题拖到网格上 这将更新底层数据结构 我可以使用一些可视化树方法来查找用户将新主题拖动到的
  • 为什么要使用 Python 进行函数式编程?

    在工作中 我们过去常常以非常标准的面向对象方式来编写 Python 程序 最近 有几个人加入了功能性潮流 他们的代码现在包含更多的 lambda map 和reduce 我知道函数式语言有利于并发性 但是函数式 Python 编程真的有助于
  • 缩小并捆绑 NodeJS 项目

    没有找到关于这个主题的太多信息 是否有任何工具 gulp 用于缩小和捆绑nodejs服务器项目 包括其node module依赖项 我遇到了无法运行的情况npm install在生产机器上 我的 可执行 大小限制为最大 20 MB 你应该看
  • 如何使用requirements.txt 在 Heroku python Web 应用程序中安装 Dlib?

    我构建了一个涉及机器学习的 Python Flask Web API 但在 Heroku 上部署它时遇到了很多挫折 问题是 我的应用程序依赖于 Dlib 一个库 我似乎找不到在我的 Heroku 服务器中安装的方法 我正在试图解决这个问题
  • Kafka Java 消费者从未收到任何消息

    我正在尝试设置一个基本的 Java 消费者来接收来自 Kafka 主题的消息 我已经跟踪了样本 https cwiki apache org confluence display KAFKA Consumer Group Example h
  • async-await 如何“节省线程”?

    我知道使用无线程异步有更多线程可用于服务输入 例如 HTTP 请求 但我不明白当异步操作完成并且需要一个线程来运行它们时 这如何不会潜在地导致线程饥饿继续 假设我们只有 3 个线程 Thread 1 Thread 2 Thread 3 并且
  • 如何在 Github 包中添加我的 Android 库的依赖项?

    我正在构建一个 Android 库 比如说 MyLibrary 这将被添加到我公司的其他应用程序中 该库有一些依赖项build gradle像这样的文件 dependencies implementation com alimuzaffar
  • serverless-webpack 找不到模块“./node/NodeTemplatePlugin”

    我正在尝试使用无服务器 webpack 插件 https github com elastic coders serverless webpack 虽然单独运行 webpack 工作得很好 但尝试运行 serverless webpack
  • 是否可以从 VS2010 插件刷新 WCF 服务引用?

    我想在 VS2010 插件中 模拟 右键单击 更新服务引用命令 我有一个对包含 Silverlight 项目的引用 我知道服务引用的名称和服务的 url 我发现了这个 http dedjo blogspot com 2007 03 addi
  • Z3 Java API 定义函数

    我需要您帮助使用 Z3 Java API 定义函数 我尝试解决这样的问题 与 z3 exe 进程一起工作正常 declare fun a Real declare fun b Real declare fun c Bool define f
  • 如何计算第一和第三四分位数?

    我有数据框 time diff avg trips 0 0 450000 1 0 1 0 483333 1 0 2 0 500000 1 0 3 0 516667 1 0 4 0 533333 2 0 我想获得该列的第一个四分位数 第三个四
  • Mysql 按特定字符串排序

    我似乎找不到这个问题的答案 假设我有一个像这样的表 ID Name 1 AAAAAAAAA 2 ABAAAAAAA 3 BBAAAAAAA 4 CDAAAAAAA 5 BBAAAAAAA 有什么办法可以通过以下方式订购name 但是 从说开
  • 由于屏幕方向变化而调整大小后,如何获取元素的新尺寸?

    我正在开发一个移动网络应用程序 在我的页面中我有一个div元素的宽度设置为 100 我需要设置这个的高度div以便高度对于设定的纵横比是正确的 例如 如果屏幕尺寸为 300 像素宽且比例为 3 2 我的脚本应该获取屏幕的宽度div 此时应为
  • 使用 sunspot/solr 搜索多个模型

    我已经能够成功地实现基本的全文搜索 但是当我尝试使用范围 with statements 时 任何涉及多对多关系模型的查询似乎都不适合我 我知道相关行位于数据库中 因为我的 sql 语句确实返回了数据 然而 太阳黑子查询不会返回任何结果 我
  • 从节点服务器上的 AWS S3 获取签名 URL

    Solved 我想得到一个签名网址从我的亚马逊S3服务器 我是新来的AWS 我在哪里设置我的密钥 and 访问 ID 密钥以便S3识别来自我的请求server var express require express var app expr
  • “-webkit-text-fill-color”和“颜色”之间的区别?

    我试图理解之间的区别 webkit text fill color只是简单地color 功能上有什么区别吗 据我所知 它们是完全相同的 有什么事情你可以用其中一个来做 而另一个却不能做吗 来自WebKit 博客 http www webki
  • 如何在 jQuery 中检测水平滚动?

    如何使用 jQuery 检测水平滚动 这将获得所有卷轴 window scroll function alert in 我只想要水平的 这似乎有效 var lastScrollLeft 0 window scroll function va
  • 在另一个模块中扩展 Ruby 模块,包括模块方法

    每当我尝试扩展 ruby 模块时 我都会丢失模块方法 include 和extend 都不会执行此操作 考虑一下片段 module A def self say hi puts hi end end module B include A e