小智 50
虽然x ||= value可以说"如果x包含一个假值,包括nil(如果 x未定义因为它出现在赋值的左侧,则隐含在此构造中),为x"赋值,它只是那.
它大致相当于以下内容.(不过,x ||= value不会抛出NameError这样的代码可以和它总是一个值分配给x作为此代码不-关键是看x ||= value作品同为任何在X falsey值,包括"默认" nil值):
if !x
  x = value
end  
要查看变量是否确实没有赋值,请使用以下defined?方法:
>> defined? z
=> nil                                                                  
>> z = nil                                                              
=> nil                                                                  
>> defined? z                                                           
=> "local-variable"                                                     
>> defined? @z                                                          
=> nil                                                                  
>> @z = nil                                                             
=> nil                                                                  
>> defined? @z                                                          
=> "instance-variable" 
但是,几乎在所有情况下,使用defined?代码气味.小心电源.做明智的事情:在尝试使用它们之前给出变量值:)
快乐的编码.
the*_*gah 26
@variable ||= "set value if not set"
因此false变量将被覆盖
> @test = true 
 => true 
> @test ||= "test"
 => true 
> @test 
 => nil 
> @test ||= "test"
 => "test" 
> @test = false 
 => false 
> @test ||= "test"
 => "test" 
因为你没有指定什么样的变量:
v = v
v ||= 1
不建议使用局部变量执行此操作.
编辑:实际上不需要v = v
| 归档时间: | 
 | 
| 查看次数: | 51282 次 | 
| 最近记录: |