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