ruby - 模块方法的范围和内部类的扩展
问题描述
我运行了这个脚本:
module Ma
class CLogic; end
def execute
"Module Ma executes."
end
end
include Ma
CLogic.execute # => "Module Ma executes."
它执行Ma#execute
. 我期待类似的东西Undefined method 'execute' for class A.
。我想明白为什么。模块是否扩展了类CLogic
,因为include
?
解决方案
在顶层包含一个模块使其实例方法可用于所有对象,而不仅仅是CLogic
:
include Ma
123.execute #=> "Module Ma executes."
:foo.execute #=> "Module Ma executes."
Array.execute #=> "Module Ma executes."
CLogic.execute #=> "Module Ma executes."
基本上是这样的:
class Object
include Ma
end
推荐阅读
- shopify - 跟踪自定义变体的库存
- swift - 在一个预期会在 swift 中返回“UITableViewCell”的函数中出现错误,如 Missing return
- python - 将列表转换为字典,其中每个键嵌套在下一个键下
- r - 在 R 中获取具有多个变量的 PK 的唯一列(postgreSQL etl)
- r - ggplot,条件填充 geom_point
- python - 未能找到可以处理输入的数据适配器:
, - r - R Markdown - 如何更改文本输出的大小 (PDF)
- android - 如何实现自定义上下文动作模式?
- c# - 将查看收件人的需求添加到模板
- javascript - React 脚本标签用法