【发布时间】:2020-05-07 21:02:37
【问题描述】:
我想实现以下内容:
module A
class B
end
# can call A:B within module
end
# cannot call A:B outside of module (like private constant)
我基本上想要私有常量,但我希望能够在模块内使用命名空间来调用它们。
在我看来,我需要对 A 中的 B 常量进行某种保护行为,但据我所知,Ruby 没有保护常量。
我很想听听有关如何实施的想法。
【问题讨论】:
-
@SebastianPalma 将 B 指定为私有常量,并且不允许使用其命名空间
A::B调用该常量。私有常量只能称为B -
你是对的......
-
“不能”是什么意思?唯一真正不能在其范围之外被访问的是局部变量。元编程方法让您可以访问 Ruby 中的私有内容。
标签: ruby-on-rails ruby oop private