2017-02-15 4 views
0

なぜ私はvarを印刷するのか理解していません50個の項目のリストを無限に印刷します。私はJavaの男ですので多分私は何かを見逃しています。文字列のリストを行ごとに取得して配列に読み込もうとしています。後でそれらを並べ替えたいが、リスト項目の過去の無限ループを取得することはできません。ruby​​ヘルプテキストファイルの入力から無限ループでデバッグ

puts "Hello, Ruby!"; 
    #Declare variable for list 
    var1 = [50] 

    #Read in words 
    #opening file 
    count = 0; 

    while count < 50 
     File.open("text.txt", "r") do |f| 
     f.each_line do |line| 
     var1[count] = line 
     count += 1 
     end 

    end 
    puts "hey guys" 
    puts var1 

    end 
+0

気にしないでください。コードはうまくいきます。 – MrTumble

+0

'var1 = [50]'はルビに長さ50の配列を作成せず、1つの項目を含む配列を作成し、その項目はFixnum 50です@tadmanは、 '[]'がArray.newのエイリアスであるため、 'var1 = []'だけを実行する必要があると述べていますが、誰も.newにargsを渡したいとき以外は使用しません。 .newを使用するときに長さを指定できますが、そうする必要はほとんどありません。 – kernelsmith

答えて

0

は、ここでは、この問題に取り組むよりRubyの方法です:ステートメントの後に使用することが想定されていない

puts "Hello, Ruby!" 

array = [ ] 

while (array.length < 50) 
    File.open("text.txt", "r") do |f| 
    f.each_line do |line| 
     array << line.chomp 
    end 
    end 
end 

# Trim to the first 50 lines 
array = array.first(50) 

;こと。最小限のコードを書くために物を分ける必要がある場合には許されますが、それでも落としてしまいます。通常、小さな1ライナーのために予約されています。例えば、class X; endのようなものです。

関連する問題