我试图初始化一个常量,如果它不存在,并且已经存在,则使用它。我尝试了以下操作并收到警告。
User = User || Struct.new(:name) #NameError: uninitialized constant User
User = Struct.new(:name) || User #works (1st time)
但是此语句将被多次遇到,当我遇到这种情况时
User = Struct.new(:name) || User
#warning: already initialized constant User
#warning: previous definition of User was here
如何处理这种情况?
试试这个
User ||= Struct.new(:name)
User = User || Struct.new(:name)
这将不起作用,因为在定义它之前User
已使用条件运算符对其进行了检查||
。因此,您将收到错误,如NameError:未初始化的常量User。例子
# first try that way
X = X || 2 #uninitialized constant X (NameError)
# then comment the above and try below way
X ||= 2
X # => 2
X = X || 2
将无法正常工作,因为在与结合使用之前我们没有在任何地方定义它||
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句