【发布时间】:2014-06-06 13:08:22
【问题描述】:
有没有办法在模块/类A 上定义一个方法foo,以便它只能在模块/类B 或其后代中可见?下面说明了这种情况:
A.new.foo # => undefined
class B
A.new.foo # => defined
def bar
A.new.foo # => defined
end
def self.baz
A.new.foo # => defined
end
end
class C < B
A.new.foo # => defined
def bar
A.new.foo # => defined
end
def self.baz
A.new.foo # => defined
end
end
我直觉上觉得精致在精神上很接近,但它似乎并没有达到我想要的效果。
【问题讨论】:
-
细化有什么问题?据我了解,您应该能够在 B 中使用 A 改进并完全实现您所描述的。
-
通过细化,您必须每次在
B的类主体中写入using ...。这是不切实际的。
标签: ruby methods visibility