小编Nes*_*uno的帖子

如何预先添加类方法

这个问题直接关系到这一个.但我试图将其分解为基本问题,我不想在另一个问题框中输入更多文本.所以这里:

我知道我可以通过扩展模块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

20
推荐指数
2
解决办法
7712
查看次数

标签 统计

ruby ×1