2016-06-16 14 views
0

私はRubyが新しく、まだエラーメッセージの解析に問題があります。私のメソッドは、この形式の文字列を取ります: "8,2,1,6,3,1,3,2; 6,4,2,7; 7,3,2,4"No Method Errorが表示されるのはなぜですか?

私の目標は次のとおりです。各セット(;でオフセット)を配列のサブアレイに分割し、サブアレイ内の各値を整数に変換します。次に、各サブアレイに2番目の値を出力する必要があります。私は最後の部分に立ち往生しています。ここでは、コードです:

@input = "8, 2, 1, 6; 3, 1, 3, 2; 6, 4, 2, 7; 7, 3, 2, 4" 
@array = [] 

def splitter 
    @input.gsub!(/\s+/, '') 
    @array = @input.split(';').map { |group| group.split(',') } 
    @array.map! { |subarray| subarray.map! {|v| v.to_i} } 
    @array.each { |e| print e(1) } 
    puts '' 
end 

splitter 

、ここでエラーメッセージです:私は、配列の配列のための右のフォームを使用していない場合、私は思ったんだけど

`block in splitter': undefined method `e' for main:Object (NoMethodError) 

+7

'e(1)'の代わりにe [1] – mlovic

+0

クイック返信mlovicに感謝します。それは確かにルーキーミスです。 – JGP

答えて

0
str = "8, 2, 1, 6; 3, 1, 3, 2; 6, 4, 2, 7; 7, 3, 2, 4" 

str.split(';').map { |e| e.split(',').map(&:to_i) } 
#⇒ [[8, 2, 1, 6], [3, 1, 3, 2], [6, 4, 2, 7], [7, 3, 2, 4]] 
関連する問題