2016-07-16 5 views
4

Rubyの新機能で、ファイルの各行を読み込もうとしています。私は各ラインを使ってLineAnalyzerというオブジェクトを作成し、そのオブジェクトをanalyzerという配列に追加したいと考えています。Ruby - ファイルの各行をオブジェクトに読み込み、オブジェクトを配列に追加します。

私がしようとしているコードは、任意のヘルプや提案を大幅に認めるだろう

Class Solution 
    attr_reader :analyzers; 

    def initialize() 
     @analyzers = Array[]; 
    end 

    def analyze_file() 
     count = 0; 

     f = File.open('test.txt') 

     #* Create an array of LineAnalyzers for each line in the file 

     f.each_line { |line| la = LineAnalyzer.new(line, count) } 
      @analyzers.push la; 
      count += 1; 
     end 
    end 
end 

です!

+0

'Array []'はあなたが意味するものではありません。 '[]'で十分です。メソッドの空の引数リストも慣習では省略されているので、単純に 'initialize'です。 – tadman

答えて

3

私が正しくあなたを理解している場合、これは動作するはずです:質問からdigressing

class Solution 
    attr_reader :analyzers 

    def initialize() 
     @analyzers = [] 
    end 

    def analyze_file() 
     count = 0; 
     File.open('test.txt').each_line do |line| 
      la = LineAnalyzer.new(line, count) 
      @analyzers.push la 
      count += 1 
     end 
    end 
end 

リトル、それを注意してください - Rubyでほとんどの場所で、あなたは;は必要ありません。 Rubyは良いので、それについては不平を言っていませんが、標準的な慣習にとどまるのは良いことです。

+0

これは動作します! – cbutler

+0

';'という言葉は、複数の行をまとめるために必要なことですが、時には 'x.each {| y | y.do_thing; y.do_other} '。たとえそうでなければ無視されていても、あなたがそれをしていない限り存在してはいけません。 – tadman

+0

真。それはまさに私がルビで ';'を使う場合だけです。 –

関連する問題