2011-12-15 8 views
0

私がnext()と呼ぶとき、[]には@currentが含まれています。これをどうすれば解決できますか?あなたは1つの配列が3を含むのではなく、Result.new 3との議論を呼んでいるので、生成された配列に間違った数の括弧を修正するにはどうすればよいですか?

class Result  
    attr_accessor :current 

    def initialize(*previous) 
    @current = previous 
    p @current 
    end 

    def next() 
    res = Result.new(@current) 
    end 
end 

res = Result.new([2,2], [3,3], [4,4]) 
nextArray = res.next 

答えて

1

あなたの最初の呼び出しには3つのパラメータがありますが、next()の呼び出しは1つしかありません。

試してみてください。

def next() 
    res = Result.new(*@current) 
end 
+0

ありがとう、それは動作します! :) –

1

あなたはpreviousの前にアスタリスクでResult.new(*@current)を行う必要がありますので、配列は、バック引数のリストの中に「スプラッティング」を取得しますアレイ。

1

原因は*previousです。したがって、Result.new @currentと呼ぶと、それは次の配列にラップされます。

1

は、(代わりに、単一の配列引数として)コンストラクタへの個別の引数として@currentでアレイを拡張してみてください。

def next 
    res = Result.new(*@current) 
end 

は、この質問は、そのアスタリスク演算子を説明も参照してください。 :What does the (unary) * operator do in this Ruby code?

関連する問題