当我们尝试重新定义一个常量时,Ruby 只显示一个警告,而不是任何错误。所以总是可以在 Ruby 中重新定义一个常量?
也可以使用 send 方法调用类的私有方法:
Const = 12
puts Const
#only an warning: already initialized constant Const
Const = 14
puts Const #Displays 14
class MyClass
private
def priv
puts 'In private method'
end
end
obj = MyClass.new
#Error: private method `priv' called for #<MyClass:0x7f2cfda21738> (NoMethodError)
#obj.priv
#but this is fine!
obj.send(:priv)
Ruby 中的这种设计背后有什么理由吗?这些不分别违反常量和访问说明符的基本思想吗?
这些设计有什么真正的、实际的用途吗?如果有的话,一些例子会很棒!
注意:我确实在这里看到了很多关于 Ruby 的常量和私有方法的问题/讨论,但我没有找到任何与这些背后的原因相关的内容。