如何在另一个类ruby中隐藏一个类

时间:2016-03-14 19:02:44

标签: ruby

是否可以在另一个类中隐藏一个类?

class A
  class B; end
end

我希望B类在A级以外是不可见的

我应该为此做些什么

b = A::B.new

是一个错误

1 个答案:

答案 0 :(得分:4)

您可以像这样定义您的内部类:

class A
  class B
    # ...
  end
  private_constant :B

  # ...
end

这样就可以在课堂内使用。但是当你尝试A::B.new时会抛出错误:

A::B.new
# NameError: private constant A::B referenced

您可能希望在此blog post中详细了解此内容。