ken*_*enn 2 ruby ruby-on-rails activesupport
给出以下代码:
module Foo
extend ActiveSupport::Concern
module ClassMethods
def foo
puts 'foo'
end
end
end
class Bar
include Foo
end
Run Code Online (Sandbox Code Playgroud)
我想做的是打电话Foo.foo而不是Bar.foo.有时在原始模块上调用类方法会更自然,特别是当功能与包含的类无关时,更好地与原始模块名称一起描述.
这看起来像代码味道.话虽如此,你可以让Foo模块使用类方法扩展自己:
module Foo
extend ActiveSupport::Concern
module ClassMethods
def foo
puts 'foo'
end
end
extend ClassMethods
end
class Bar
include Foo
end
Bar.foo
Foo.foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |