Ruby中的'|| ='运算符

Lee*_*fin 14 ruby

有人可以向我解释以下Ruby代码的含义吗?(我在一个人的项目中看到了这段代码):

car ||= (method_1 || method_2 || method_3 || method_4)
Run Code Online (Sandbox Code Playgroud)

上面的代码和下面的代码有什么区别?

car = method_1 || method_2 || method_3 || method_4
Run Code Online (Sandbox Code Playgroud)

----------更新--------------

好吧,||=在读完@Dave的解释之后,我得到了运算符的含义,我的下一个问题是两者都是method_2,method_3method_4返回一个值,哪一个值将分配给car?(我想最初car)

Dav*_*ave 11

它是'条件赋值'的赋值运算符

看这里 - > http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators

条件转让:

 x = find_something() #=>nil
 x ||= "default"      #=>"default" : value of x will be replaced with "default", but only if x is nil or false
 x ||= "other"        #=>"default" : value of x is not replaced if it already is other than nil or false
Run Code Online (Sandbox Code Playgroud)

运算符|| =是表达式的简写形式:

x = x || "default" 
Run Code Online (Sandbox Code Playgroud)

编辑:

在看到OP的编辑之后,这个例子只是这个的扩展,意思是:

car = method_1 || method_2 || method_3 || method_4
Run Code Online (Sandbox Code Playgroud)

将method_1,method_2,method_3,method_4(按此顺序)的第一个非零或非假返回值分配给car它,或者它将保留其旧值.


归档时间:

查看次数:

3055 次

最近记录:

13 年 前