Looking for ruby Keywords? Try Ask4Keywords

Ruby Language 用逻辑语句控制流程


虽然它看似违反直觉,但您可以使用逻辑运算符来确定是否运行语句。例如:

File.exist?(filename) or STDERR.puts "#{filename} does not exist!"

这将检查文件是否存在,如果不存在则仅打印错误消息。 or语句是懒惰的,这意味着一旦确定它的值是真还是假,它就会停止执行。一旦发现第一项是真的,就没有必要检查另一项的值。但如果第一个词是假的,它必须检查第二个词。

常用的是设置默认值:

glass = glass or 'full' # Optimist! 

如果尚未设置,则将glass的值设置为'full'。更简洁地说,您可以使用符号版本or

glass ||= 'empty' # Pessimist. 

只有当第一个语句为false时,才可以运行第二个语句:

File.exist?(filename) and puts "#{filename} found!"

再次, and是懒惰的,所以它只会在必要时执行第二个语句以获得一个值。

or运算符的优先级低于and 。同样, ||优先级低于&& 。符号形式的优先级高于单词形式。这很方便您知道何时需要将此技术与赋值混合使用:

a = 1 and b = 2
#=> a==1
#=> b==2
a = 1 && b = 2; puts a, b
#=> a==2
#=> b==2

请注意,Ruby样式指南建议

and / or关键字被禁止。最小的附加可读性不值得引入细微错误的高概率。对于布尔表达式,请始终使用&&||代替。对于流量控制,请使用ifunless ; &&||也可以接受但不太清楚。