可能重复:
Ruby:||之间的区别 和'或'
使用Ruby
||
Run Code Online (Sandbox Code Playgroud)
和
or
Run Code Online (Sandbox Code Playgroud)
是非常常见的做法,这使得了解两者之间的区别很重要,不幸的是我不确定.
首先我的问题是如果以下假设是正确的:
EX1:
if @variable_1 || @variable_2 || @variable_3
do something
else
do nothing
end
Run Code Online (Sandbox Code Playgroud)
EX2:
if @variable_1 or @variable_2 or @variable_3
do something
else
do nothing
end
Run Code Online (Sandbox Code Playgroud)
所以在第一个例子中,如果任何变量为false,那么它将执行"什么都不做"
但是,对于第二个示例,将检查所有变量,如果一个为真,则执行"执行某些操作".
总之使用"||" 如果你有一个需要检查的变量列表,如果其中一个返回false,那么一个标志会上升.将第二个示例与变量列表一起使用,其中只需要一个变量才能继续执行所需的代码.
这些假设是否正确?
可能重复:
Ruby中的i = true和false是真的吗?
Perl(或,和)和(||,&&)短路运营商之间有什么区别?
Ruby:||之间的区别 和'或'
是||一样or的Rails的?
案例A:
@year = params[:year] || Time.now.year
Events.all(:conditions => ['year = ?', @year])
Run Code Online (Sandbox Code Playgroud)
将产生以下SQL script/console:
SELECT * FROM `events` WHERE (year = 2000)
Run Code Online (Sandbox Code Playgroud)
案例B:
@year = params[:year] or Time.now.year
Events.all(:conditions => ['year = ?', @year])
Run Code Online (Sandbox Code Playgroud)
将产生以下SQL script/console:
SELECT * FROM `events` WHERE (year = NULL)
Run Code Online (Sandbox Code Playgroud)