2016-08-21 1 views
2
val numbers = List(1,4,5,1,6,5,6) 
numbers.groupBy(x=>x) // Run OK 
numbers.groupBy(_)  // ERROR 

только любопытство: кто-нибудь знает, почему второй не работает ¿?scala and groupby: value Unzip не является членом

ОШИБКА: Ошибка: (8, 4) значение Распакуйте не является членом scala.collection.immutable.IndexedSeq [(Char, Int)] C.Unzip

+1

Возможный дубликат [Использование функции _ _ в scala лямбда-функциях ] (http://stackoverflow.com/questions/7673545/usage-of-in-scala-lambda-functions) –

ответ

2

Компилятор интерпретирует numbers.groupBy(_), как x => numbers.groupBy(x), который явно не то, что вы намеревались. Если вы не любите избыточную x => x, вы можете использовать предопределенную функцию тождества:

numbers.groupBy(identity) 
0

Согласно моему пониманию, GroupBy fucntoins принимает функции и возврат группу по значениям.

определения GroupBy: - четкость группиЙ [K] (е: А => К): immutable.Map [К, Repr]

В вашем кодировании numbers.groupBy (х => х)// Запустите ОК, потому что x рассматривает как литерал функции/значения numbers.groupBy (_) // ОШИБКА, потому что _ является держателем места для параметра, а не значением функции/литералом

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