如果我使用'|| ='声明一个常量值会发生什么(坏的)?

Bac*_*cko 1 ruby ruby-on-rails constants declaration ruby-on-rails-3

我正在使用Ruby on Rails v3.0.9,我想知道如果我声明一个常量值会发生什么(坏的):

MAX_LENGTH ||= 30
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我正在开发一个"acts_as_something"插件(在我的应用程序中有多个类"acts_as_something"),我必须声明上面的常量值,以便在/.../log/apache2/error.log(生产模式)中不显示\生成"警告消息",如下所示:

warning: already initialized constant MAX_LENGTH
Run Code Online (Sandbox Code Playgroud)

tad*_*man 5

警告一般都不好.您可能希望将其切换为:

unless (const_defined?(:MAX_LENGTH))
  MAX_LENGTH = 30
end
Run Code Online (Sandbox Code Playgroud)

  • 它更好,因为它不会通过正确检查是否首先定义常量来触发警告.如果你可以避免使用常量,你可能想要这样做.一个返回常量值的方法,例如:`def max_length; 30; end` (2认同)