这个问题直接关系到这一个.但我试图将其分解为基本问题,我不想在另一个问题框中输入更多文本.所以这里:
我知道我可以通过扩展模块ClassMethods并通过Module #include钩子来包含classmethods.但我可以在前置时做同样的事情吗?这是我的例子:
Foo类:
class Foo
def self.bar
'Base Bar!'
end
end
Run Code Online (Sandbox Code Playgroud)
类扩展:
module Extensions
module ClassMethods
def bar
'Extended Bar!'
end
end
def self.prepended(base)
base.extend(ClassMethods)
end
end
# prepend the extension
Foo.send(:prepend, Extensions)
Run Code Online (Sandbox Code Playgroud)
class FooE:
require './Foo'
class FooE < Foo
end
Run Code Online (Sandbox Code Playgroud)
和一个简单的启动:
require 'pry'
require './FooE'
require './Extensions'
puts FooE.bar
Run Code Online (Sandbox Code Playgroud)
当我开始编写脚本时,我并不Extended Bar!
像我期望的那样Base Bar!
.为了正常工作,我需要更改什么?
ruby ×1