Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala中返回其第一个参数的函数的简明实现_Scala - Fatal编程技术网

在Scala中返回其第一个参数的函数的简明实现

在Scala中返回其第一个参数的函数的简明实现,scala,Scala,在Scala中,当我调用“helloworld.groupBy(u.toLower)时,我得到了预期的结果: scala> "helloworld".groupBy(_.toLower) res10: scala.collection.immutable.Map[Char,String] = Map(e -> e, l -> lll, h -> h, r -> r, w -> w, o -> oo, d -> d) 但是,当我将groupBy设置

在Scala中,当我调用
“helloworld.groupBy(u.toLower)
时,我得到了预期的结果:

scala> "helloworld".groupBy(_.toLower)
res10: scala.collection.immutable.Map[Char,String] = Map(e -> e, l -> lll, h -> h, r -> r, w -> w, o -> oo, d -> d)
但是,当我将groupBy设置为区分大小写时(即,
“helloworld”.groupBy(41;
),我会得到以下错误:

scala> "helloworld".groupBy(_)
<console>:8: error: missing parameter type for expanded function ((x$1) => "helloworld".groupBy(x$1))
              "helloworld".groupBy(_)
                                   ^
scala>“helloworld”.groupBy(\uux)
:8:错误:缺少扩展函数的参数类型((x$1)=>“helloworld”.groupBy(x$1))
“helloworld”。groupBy(41;
^
为什么第二个例子不起作用?编写
“helloworld”.groupBy(x=>x)
给出了预期的结果,但这似乎是不必要的冗长。

这是因为

"helloworld".groupBy(_)
实际上相当于

x => "helloworld".groupBy(x)
因此,通过使用前一种语法,您可以真正定义函数,而不是分组。要查看这一点,请检查

scala> "helloworld".groupBy(_)
<console>:8: error: missing parameter type for expanded function ((x$1) => "helloworld".groupBy(x$1))
              "helloworld".groupBy(_)
scala>“helloworld”.groupBy(\uux)
:8:错误:缺少扩展函数的参数类型((x$1)=>“helloworld”.groupBy(x$1))
“helloworld”。groupBy(41;

除此之外,不用使用
x=>x
你可以一直使用
identity

当我有机会使用
identity
功能时,我总会感到一种兴奋。“当你看到它的时候……”:如果你参考了SLS中引起这种奇怪的部分,我会用SLS 6.23来回答(匿名函数)@luigipling更具体地说,arg列表不是expr,但
f()
是。SLS似乎没有说明占位符为什么被挤在大括号中,所以你不能
“hi”groupBy{u}
。块expr需要作为arg expr的特殊特许,所以这可能会让人困惑。