常量或类variables在ruby?
我已经使用Ruby进行了几个月的编程,而且我想知道何时使用常量来超越类variables,反之亦然。 (我在Rails中工作,思考模型中的常量)。
class Category TYPES = %w(listing event business).freeze end
要么
class Category @@types = %w(listing event business).freeze cattr_reader :types end
有一种情况比另一种更可取? 还是仅仅是品味/风格的问题?
最主要的是,通过使用CONSTANT表示法,您可以向读者说清楚。 小写,冻结的string给人的印象是可以设置的,强迫某人回去读RDoc。
如果这些是在源代码中定义的真正常量值,并且不希望在代码执行期间更改,那么我会推荐使用常量。
如果您打算在执行过程中dynamic设置和/或更改这些值,请使用具有getters和setter的classvariables。
基本上,你可以这样说:如果你想要的东西是不变的,使用一个常量。 如果你想要的东西是可变的,使用一个variables。 看起来你的types列表是常量,看到它是一个冻结数组,所以我认为在这种情况下使用常量是有意义的。
如果您不希望在程序的运行时间内值发生变化, 并且您希望允许在课程外部访问该值,请使用常量。
否则,你可以使用一个类variables。 但是请注意,类variables是在子类和子类的实例之间共享的。 所以如果你在将来某个时候实现一个子类,你必须非常小心使用类variables。
有关更多信息,请参阅这里的答案: Ruby中的类variables