我已经学习了几个月的Ruby编程,现在想知道何时适合使用常量和类变量以及相反的情况。 (我正在使用Rails,在模型中考虑常量)。
class Category
TYPES = %w(listing event business).freeze
end
或者
class Category
@@types = %w(listing event business).freeze
cattr_reader :types
end
有没有情况下其中一种更可取?或者这只是口味/风格问题?
我已经学习了几个月的Ruby编程,现在想知道何时适合使用常量和类变量以及相反的情况。 (我正在使用Rails,在模型中考虑常量)。
class Category
TYPES = %w(listing event business).freeze
end
或者
class Category
@@types = %w(listing event business).freeze
cattr_reader :types
end
有没有情况下其中一种更可取?或者这只是口味/风格问题?
重要的是,通过使用常量符号,您向读者明确表明。小写、冻结字符串给人的印象可能是可以被设置的,这会迫使某些人重新阅读 RDoc。
如果您计划在执行期间动态设置和/或更改这些值,则使用具有getter和setter的类变量。
基本上,可以这样说:如果您需要一个常量,请使用常量。如果您需要一个变量,请使用变量。看起来您的类型列表是常量,因为它是一个不可变数组,所以在这种情况下使用常量是有意义的。
FOO = 18
private_constant :FOO