如何处理初始化常数



我试图在不存在的情况下初始化一个常数,如果一个常数已经存在,则使用它。我尝试了下面的警告。

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:非初始化常数用户。示例

# 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将不起作用,因为我们在使用 ||之前没有在任何地方定义它。

最新更新