Ruby:在类方法中使用模块方法

2024-04-18

我们如何在类方法中使用模块方法而不扩展模块?

module TestModule
  def module_method
    "module"
  end
end

class TestClass
  include TestModule

  def self.testSelfMethod
    str = module_method
    puts str
  end
  TestClass.testSelfMethod
end

然后它返回:

test.rb:11:in `testSelfMethod': undefined local variable or method `module_method' for TestClass:Class (NameError)

通过包含该模块,您可以module_method is an instance方法上TestClass,这意味着您需要在类的实例上调用它,而不是类本身。

如果你想让它成为类本身的方法,你需要extend TestModule, not include it.

module TestModule
  def module_method
    "module"
  end
end

class TestClass
  extend TestModule # extend, not include

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

Ruby:在类方法中使用模块方法 的相关文章

随机推荐

  • R 每行分割字符串[重复]

    这个问题在这里已经有答案了 我有一个data frame like word count a b c 5 c d 3 c d e 10 我想分割每一行的字符串以获得以下结果 word count a 5 b 5 c 5 c 3 d 3 c
  • 给定类型的转换运算符与构造函数。哪个更可取?

    我正在为我的容器定义迭代器类型 当然我想要iterator可转换为const iterator 但我不确定哪个更好 更可取 中的转换运算符iterator class iterator operator const iterator 或非显
  • 尝试升级到 flink 1.3.1 时出现异常

    我尝试将集群中的 flink 版本升级到 1 3 1 以及 1 3 2 但我的任务管理器中出现以下异常 2018 02 28 12 57 27 120 ERROR org apache flink streaming runtime tas
  • Andengine,如何用触摸屏移动精灵

    我从 Andengine 开始 当我触摸屏幕 而不是精灵 时很难移动我的精灵 我真的需要你的帮助 非常感谢 这是我的代码 Override protected Scene onCreateScene final Scene scene ne
  • 用匿名方法定义backgroundworker的RunWorkerCompleted?

    我希望我使用了正确的术语 我的目标是这样的 我意识到它不会那样工作 private bool someBool false BackgroundWorker bg new BackgroundWorker bg DoWork new DoW
  • 结合前同级和后同级的 Xpath

    I am trying to read the values from this screen Sections appears dynamically it can be more than one We have to read eac
  • 装箱(或背包?)问题

    我收集了 43 到 50 个数字 范围从 0 133 到 0 005 但大部分都比较小 如果可能的话 我想找到 L 和 R 之和非常接近的所有组合 The brute force method takes 243 to 250 steps
  • UrlHelper.Action("Edit", "Ad") 返回 id 参数?

    Hi 我使用以下代码生成 URL UrlHelper urlHelper new UrlHelper htmlHelper ViewContext RequestContext urlHelper Action Edit Ad 如果我当前在
  • 如何重置爬虫URL缓存?

    我正在运行一个通过expressjs 调用调用的爬虫 当我再次调用相同的路线时 我的爬虫再次运行 但显示所有路线已经完成 我什至删除了 storage 文件夹 我阅读了文档 但似乎无法让 purgeDefaultStorages 工作 我将
  • Oracle数据库中如何去掉NUL字符?

    数据库 我有一个 Oracle11g 数据库 其中有一个包含大约 1000 万行和大约 40 列的表 这些数据源自打孔卡时代 并已从一个 Oracle 版本转换到下一个版本多次 这是一个实时生产数据库 并且在某种程度上持续使用 但它并不是那
  • 与 NaN 进行元素比较作为相等

    如果我运行以下代码 dft1 pd DataFrame a 1 np nan np nan dft2 pd DataFrame a 1 1 np nan dft1 a dft2 a 结果是 0 True 1 False 2 False Na
  • Android 上的位置感知地理编码(就像 Google 地图)

    似乎在搜索谷歌地图 app is 位置感知 例如 如果我在悉尼搜索 Pitt St 它会立即找到正确的街道 单击 您的意思是 会显示其他 Pitt St 的列表附近郊区 有没有办法在我们的应用程序中获得类似的体验 我尝试了标准Geocode
  • 将 float 发送到不兼容类型 id 的参数

    我正在创建一个按钮 该按钮使用核心数据来保存点注释的名称 x 坐标和 y 坐标 我可以成功保留该名称 但当我尝试保存坐标时 我不断收到此错误 我已经记录了正确的数据 但我似乎无法保存它 当我尝试为 newPOI 设置值时 收到一条错误消息
  • AWS Cognito - 管理员无需发送电子邮件即可重置用户密码

    我需要重置一些用户的密码 但是not发送忘记密码的电子邮件 只需重置密码 以便他们下次登录时我可以显示一条消息 要求他们请求重置密码 深入研究我需要的最基本的东西 在不通知用户的情况下 我需要让他们进入一个RESET REQUIRED状态
  • C++ std::pair 的 C# 模拟是什么?

    我感兴趣的是 C 的类似物是什么std pair在 C 中 我发现System Web UI Pair类 但我更喜欢基于模板的东西 谢谢你 Tuples 自 NET4 0起可用 http msdn microsoft com en us l
  • 具有纬度/经度值的 Android GeoPoint

    我正在尝试获取 23 4456 by 45 44334 的 GeoPoint 我应该将什么值传递到 GeoPoint 的构造函数中 因为它只接受整数 GeoPoint 坐标以微度为单位 度 1e6 书面形式here http develop
  • 尝试让 div 在鼠标移动时“跟随”光标,但有延迟

    我想创建类似于旧鼠标轨迹的效果 其中 div 被延迟但跟随光标 通过使用设置间隔来触发光标坐标的动画 我已经相当接近了 body mousemove function e if enableHandler handleMouseMove e
  • 使用来自 WebSocket @ServerEndpoint 的 CDI @SessionScoped bean

    在 Web 应用程序中 用户使用 servlet HTTP 会话 一些数据存储在 CDI SessionScoped beans 中 稍后在某些页面中 WebSocket 通信是在用户浏览器和服务器之间执行的 对于 GlassFish 4
  • 如何从云函数内部运行查询?

    我想在调用 Firebase 应用程序上的云函数后对数据库执行查询 假设我在数据库上有某个触发器 请考虑中提供的示例Firebase 入门指南 https firebase google com docs functions write f
  • Ruby:在类方法中使用模块方法

    我们如何在类方法中使用模块方法而不扩展模块 module TestModule def module method module end end class TestClass include TestModule def self tes