在 Scala 中,为什么 `_` 不能在此处的 groupBy 中使用?
In Scala, why `_` can't be used in groupBy here?
我正在尝试计算一个单词中每个字符的出现列表,我当前的代码如下所示:
"hello"
.groupBy((x:Char)=>x)
.map(a=>(a._1, a._2.length))
我认为 .groupBy((x:Char)=>x)
看起来很笨拙,因此重写如下:
"hello"
.groupBy(_)
.map(a=>(a._1, a._2.length))
但随后编译器抛出错误
Error:(1, 18) missing parameter type for expanded function ((x) => "hello".groupBy(x).map(((a) => scala.Tuple2(a._1, a._2.length))))
"hello".groupBy(_).map(a=>(a._1, a._2.length))
^
有人对此有想法吗?或者有更好的写法吗?
x.groupBy(_)
,与任何方法 x.foo(_)
一样,表示 "turn this method into a function",即 y => x.groupBy(y)
.
因为 _
用于很多事情,它 也 可以表示 "plug in the value here"。但是,由于上述含义,"plug in identity" 不起作用。
您可以通过 x => x
或 identity
获得您想要的 _
。
我正在尝试计算一个单词中每个字符的出现列表,我当前的代码如下所示:
"hello"
.groupBy((x:Char)=>x)
.map(a=>(a._1, a._2.length))
我认为 .groupBy((x:Char)=>x)
看起来很笨拙,因此重写如下:
"hello"
.groupBy(_)
.map(a=>(a._1, a._2.length))
但随后编译器抛出错误
Error:(1, 18) missing parameter type for expanded function ((x) => "hello".groupBy(x).map(((a) => scala.Tuple2(a._1, a._2.length))))
"hello".groupBy(_).map(a=>(a._1, a._2.length))
^
有人对此有想法吗?或者有更好的写法吗?
x.groupBy(_)
,与任何方法 x.foo(_)
一样,表示 "turn this method into a function",即 y => x.groupBy(y)
.
因为 _
用于很多事情,它 也 可以表示 "plug in the value here"。但是,由于上述含义,"plug in identity" 不起作用。
您可以通过 x => x
或 identity
获得您想要的 _
。