Scala函数声明:占位符与参数?

时间:2017-06-25 16:47:46

标签: scala

为什么以下只能使用格式 a => xxx 来定义一个函数?

Some("Help").foreach(p => println(p + " me"))

将产生输出"帮助我",这是我所期望的。另一方面,以下代码(我认为是等效的)

Some("Help").foreach(println(_ + " me"))

导致下划线出错: 缺少扩展函数的参数类型((x $ 1:)=> x $ 1. $ plus(" me"))

但以下(非常相似)

Some("Help").foreach(println(_))

导致"帮助"这也是预期的行为。

在第3次尝试中,我尝试指定类型,如下所示:

Some("Help").foreach(println((_: String) + " me"))

结果是 错误:类型不匹配; 发现:单位; required:String => ?

那么,发生了什么?为什么下划线语法不起作用?

0 个答案:

没有答案