Ruby 在类中包含的嵌套模块中调用方法
我有以下配置:Ruby 在类中包含的嵌套模块中调用方法,ruby,module,Ruby,Module,我有以下配置: module A module B def foo puts "foo" end end end class C include A end c = C.new c.foo NoMethodError: undefined method `foo' for #<C:0x8765284> 模块A 模块B 德福 放“福” 结束 结束 结束 C类 包括 结束 c=c新 c、 福 NoMethodError:未定义的方法'foo'
module A
module B
def foo
puts "foo"
end
end
end
class C
include A
end
c = C.new
c.foo
NoMethodError: undefined method `foo' for #<C:0x8765284>
模块A
模块B
德福
放“福”
结束
结束
结束
C类
包括
结束
c=c新
c、 福
NoMethodError:未定义的方法'foo'用于#
我如何实现上述目标
谢谢。模块B是在A中“定义”的,而不是在A中“包含”的。这就是为什么在C中包含A模块时无法访问#foo实例方法的原因。您可以执行以下操作:
class C
include A::B
end
C.new.foo
当包含
A
时,可以使用included
回调使B
包含
module A
def A.included(klass)
klass.include B
end
module B
def foo
puts "foo"
end
end
end
class C
include A
end
下面的方法行得通
c = C.new
c.foo