2016-04-05 7 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]' <- Это два аргумента типа. –

+0

Если вы введете ': t List ((1, 1), (1, 2))' в REPL, он скажет вам, что такое тип ('List [(Int, Int)]'). –

ответ

5

Подпись должна быть:

def list: List[(Int,Int)] 

Что означает: кортежа два Int сек

1

Аргумент/типа вы определяете после List в пределах [] - скобок определяет, какой тип данных список должен содержать.

Первое определение List[Int] говорит, что вы ожидаете список Целых если вы хотите иметь список Int пара можно использовать

List[(Int,Int)] 

или

List[Tuple2[Int,Int]] 
+1

'Список [Tuple2 [Int]]' недействителен как 'List [Int, Int]' ... –

+0

Исправлено. Благодарю. –

4

Оригинальный вопрос является

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

И ответ List конструктор параметризируется с одним параметром типа, так что в вашем случае для того, чтобы сделать его работу вы должны преобразовать 2 параметра в один, добавляя скобки вокруг них, чтобы сделать Tuple:

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

хороший ответ. –

Смежные вопросы