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 ; &&||也可以接受但不太清楚。