2013-04-26 2 views
10

Rubyではなく、いつ変数を宣言するのかを知りますか?Rubyで変数を宣言していますか?

最初のコードが文字列として宣言され、ブロックの外側に宣言される必要がある理由を知りたいのですが、2番目のブロックは入力されません。対

input = '' 
while input != 'bye' 
    puts input 
    input = gets.chomp 
end 
puts 'Come again soon!' 

while true 
    input = gets.chomp 
    puts input 
    if input == 'bye' 
    break 
    end 
end 
puts 'Come again soon!' 

答えて

18

ない変数は、これまでのRubyで宣言されています。むしろ、ルールは、変数が使用される前に割り当てに表示されなければならないというルールです。あなたの最初の例では最初の2行で

ルック:

input = '' 
while input != 'bye' 

while条件は、変数inputを使用しています。したがって、その前に割り当てが必要です。第2の例では:それはputs呼び出しで使用される前に、再び

while true 
    input = gets.chomp 
    puts input 

、変数inputが割り当てられます。どちらの例でも、すべてが世界で正しいです。

+3

「割り当て済み」の定義によっては、これは正確には正しくありません。コントラスト 'if(false)、a = 3 end; a || 3 'に 'b || 3 '。インタプリタによって読み込まれた実行パスとして "assigned"を定義した場合、それ以外の場合は、インタプリタによって割り当てられる前に変数を使用することはできません。 –

+0

これを正解してください、それは今や理にかなっています! –

+2

@KristopherMicinskiフェア十分です。 "割り当てに表示される"と言わねばならず、そのように編集する必要があります。 – Gene

関連する問題