2016-04-05 17 views
0

これは正常に動作します:List [Int、Int]が有効なScala型でないのはなぜですか?

def list: List[Int] = List(1, 2, 3) 

しかし、これはしていません:

def list: List[Int, Int] = List((1, 1), (1, 2)) 

Error : :28: error: wrong number of type arguments for List, should be 1

問題は何ですか?

+0

物事広場で角カッコは型引数です。 '[Int、Int]' < - これは2つの型引数です。 –

+0

':t List((1,1)、(1,2))'をREPLに入力すると、その型が何であるかがわかります(List [(Int、Int)])。 –

答えて

5

署名は次のようになります。

意味
def list: List[(Int,Int)] 

:2 Int

1

タプルをあなたは[]List後に定義する引数/タイプ - ブラケットはどのような種類のデータの定義しますリストに含める必要があります。

最初の定義List[Int]はあなたが使用することができますIntペアのリストを持っているしたい場合は、整数のリストを期待すると言う

List[(Int,Int)] 

または

List[Tuple2[Int,Int]] 
+1

'List [Tuple2 [Int]]は' List [Int、Int] 'と無効です... –

+0

が修正されました。ありがとう。 –

4

元の質問は

です

Why is List[Int, Int] not a valid Scala type?

答えはですコンストラクタは、それはあなたがTupleを作るためにそれらの周りに括弧を追加することにより、単一の一つに2つのパラメータを変換する必要があります動作させるために、ので、あなたの場合には、単一の型パラメータを持つパラメータ化されている:

def list: List[(Int, Int)] = List((1, 1), (1, 2)) 
+0

素晴らしい返信です。 –

関連する問題