scala和groupby:value Unzip不是成员

时间:2016-08-21 09:19:45

标签: scala

val numbers = List(1,4,5,1,6,5,6)
numbers.groupBy(x=>x)    // Run OK
numbers.groupBy(_)       // ERROR

只是出于好奇:有人知道为什么第二次不运行¿?

错误:错误:(8,4)值Unzip不是scala.collection.immutable.IndexedSeq [(Char,Int)]的成员 C.Unzip

2 个答案:

答案 0 :(得分:2)

编译器将numbers.groupBy(_)解释为x => numbers.groupBy(x),这显然不是您的意图。如果您不喜欢冗余的x => x,则可以使用预定义的身份函数:

numbers.groupBy(identity)

答案 1 :(得分:0)

根据我的理解,groupby fucntoins接受函数并按值返回组。

groupby的定义: - def groupBy [K](f:A => K):immutable.Map [K,Repr]

在你的编码中 numbers.groupBy(x => x)//运行OK,因为x视为函数文字/值 numbers.groupBy(_)// ERROR因为_是参数的占位符,而不是函数值/ literal