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
答案 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