2012-08-25 81 views
0

下面的代碼可以作爲我想,開啓或關閉光與升的每個按鍵。但是,當我嘗試添加其他我想要完成的切換時,我不能。Ruby語句中的`和`數量是否有限制?

look = 0 
lighton = 0 
while look < 10 
    system 'stty cbreak' 
    q = $stdin.sysread 1 
    case q ### #{q} 
    when "l" then if lighton==1 then lighton=0 and puts "ight off" 
       else lighton=1 and puts "ight on" end 
    end 
    system 'stty cooked' 
    look += 1 
end #while 

如果我再添and它是沒有看到,但我沒有得到任何錯誤:

look = 0 
lighton = 0 
while look <10 
    system 'stty cbreak' 
    q = $stdin.sysread 1 
    case q ### #{q} 
    when "l" then if lighton==1 then lighton=0 and puts "ight off" and puts "light still off" 
       else lighton=1 and puts "ight on" end 
    end 
    system 'stty cooked' 
    look += 1 
end #while 

我想幾個語句添加到兩個ifelse部分,但不能。

回答

3

有沒有限制,你只是濫用and操作。它並不是要做「這個和那個」,它確實「做到這一點,如果真的這麼做,也要這樣做」。這裏有一個簡單的例子:

1 and puts 'falsy' 
nil and puts 'truthy' 
# prints: falsy 

由於puts回報nil,這是falsy,puts 'hello' and puts 'world'將只打印 「你好」。

所以,不要使用and創建一個班輪。您可以改爲使用;,但這無助於可讀性。相反,只需使用多行!這是更清楚這是怎麼回事:

case q 
when "l" 
    if lighton == 1 
    lighton = 0 
    puts "light off" 
    puts "light still off" 
    else 
    lighton = 1 
    puts "light on" 
    end 
end 

您可能希望瞭解更多關於and/or in Ruby and how they differ from &&/||

0

我什麼都不知道關於Ruby但有多個東西你如果statment的then之後發生的事情,你需要將它們分組不知何故?即Java中,你會堅持他們{}

相關問題