在Ruby 2.0下,从该模块中的类访问模块方法的正确方法是什么?
例如,如果我有
module Foo
class Foo
def do_something
Foo::module_method
end
end
def self.module_method
puts 'How do I call this?'
end
end
我明白了,
./ so-module.rb:7:in
do_something': undefined method
module_method' for Foo :: Foo:Class(NoMethodError)来自./so-module.rb:16:in`'
定义模块方法的正确方法是什么,以便我可以从类Foo
访问它?
答案 0 :(得分:1)
您必须在模块的单例类上定义方法:
module Foo
class Bar
def do_something
Foo.module_method
end
end
def self.module_method
'Success!'
end
end
Foo::Bar.new.do_something #=> "Success!"
答案 1 :(得分:0)
请查看以下代码:
module Foo
class Bar
include Foo
def do_something
module_method
end
end
def module_method
puts 'How do I call this?'
end
end
b = Foo::Bar.new
b.do_something
结果:
How do I call this?
您甚至可以尝试添加以下代码:
b1 = Foo::Bar::Bar.new
b1.do_something
这很棘手且结果相同:
How do I call this?