2016-07-15 13 views
2

可変数の引数を取るメソッドにリストを渡すと、それは機能します。可変数の引数を持つスカラクラスのコンストラクタ

val testList = List("a", "b", "c") 

def testMethod(str: String*): Seq[String] = str 

testMethod(testList) // outputs WrappedArray(List("a", "b", "c")) 

しかし、可変数の引数を取るクラスコンストラクタにリストを渡すと、型エラーが発生します。

val testList = List("a", "b", "c") 

class TestClass(str: String*) 

val t = new TestClass(testList) 

// error: type mismatch 

// found: List[String] 

// required: [String] 

これをどのように修正できますか?

答えて

3

どちらの場合でも動作しません(最初のケースでは不要なWrappedArrayに注意してください)。シーケンスを可変引数リストとして渡すには、それをそのまま扱う必要があります。その構文は同じです。最初のケースで:

testMethod(testList: _*) 

第2の場合には:

val t = new testClass(testList: _*) 

あなたは唯一の違いはここにタイプではないということで、可変引数構文の同様の方法でこの表記法を解釈することができます明示的に記載されています(代わりにアンダースコアが使用されます)。

関連する問題