(1..20).each do |x| puts x if (x == 5) .. (x == 10) end
上面的flip-flop的用法,你可以理解成 將 大於等於5和小於等於10的數字列印出來,也就是理解成 puts x if x >=5 && x <=10 ,但是注意你不能寫成下面這樣
(1..20).each do |x|
puts x if (x >= 5) .. (x <= 10)
end
如果寫成綠色背景的程式碼,就會造成輸出 大於等於5 小於等於20的數字
問題2 flip-flop的用法
puts x if (x == 5) .. (x == 10)
在普通的判斷條件上不等價於 puts x if x >=5 && x <=10
def test(a) puts a if a == 5..a == 10 end test(6)
上面程式碼並不會列印出 6
def test(a) puts a if a == 5..a == 10 end test(10) #不輸出 test(5) #輸出5 test(8)#不輸出
但是你傳入5是可以列印出5,但是傳入其他則不列印
如果修改成下面
def test(a) puts a if a >= 5 && a <= 10 end test(6)
是可以列印出6的
總結:flip-flop用法也只就在使用rang的block內,等價於 >= && <= 的理解