【发布时间】:2020-09-28 10:02:29
【问题描述】:
module A
module B
class Foo
def initialize(args)
@args = args
end
def call
puts 'Inside Foo'
end
end
end
end
module C
class Boo
def initialize(args)
@args = args
end
def call
puts 'Inside Boo'
A::B::Foo.new(@args).call
end
end
end
boo = C::Boo.new(nil).call
# Inside Boo
# Inside Foo
A::B::Foo.new(nil).call
# Inside Foo
如何避免 A::B::Foo.new(nil).call ?
它应该只能从 Boo 类访问。
如果有人想访问Foo 类,他们将能够从Boo 访问它。
我怎样才能做到这一点?
搜索了互联网,但找不到应该称之为这个概念的东西?
【问题讨论】:
-
你可以将
A::B::Foo.new设为private(并使用send从Boo中调用它) -
你为什么要这样做?
-
我们在
class Boo中有一组验证,我无法在class Foo中添加。所以,我不希望任何人在没有这些验证的情况下使用class Boo。
标签: ruby-on-rails ruby class module