我正在模块中编写一些类:
module A
end
module A::B
def foo
print "foo"
end
end
class A::B::C
end
A::B::C.new.foo # => NoMethodError: undefined method `foo' for #<A::B::C...>
如何在模块 B 中定义方法以在类 C 中调用?
最佳答案
就好像你写:
module A::B
def foo
print "foo"
end
class C
end
print 'C.instance_methods : '; p C.instance_methods(false)
#=> C.instance_methods : []
end
C
不会自动继承 foo
.继承实例方法只有两种方式:
class C < super_class
其中super_class
是一个返回类的表达式包含一个模块:
class C include <some module>
有关父类(super class)链的解释,请参阅 How does Inheritance work in Ruby?和 Ruby: Module, Mixins and Blocks confusing?
关于ruby - 如何在 Ruby 中的命名空间类上调用命名空间方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501291/