今天我了解了ruby constantize
方法,当在字符串上调用时,它会查找具有相同名称的任何类或模块,并将其设置为该类或模块。
我对'常数'这个词的理解一直是'一个变量,一旦你初始化它就无法改变。'是否存在“常量”的另一个定义,即“一个类或一个模块?”
还是我完全误解了constantize
?
答案 0 :(得分:1)
在Ruby中,以大写字母开头的东西是常量。它们可能不会在动态代码中分配,例如在方法内部,可能会被调用两次。 (无论如何,当这样的代码评估两次时,你会得到一个令人讨厌的警告,例如由于急切load
... ...
所以class Foo
指定一个常量Foo,其值是一个类。