为什么以下只能使用格式 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 => ?
那么,发生了什么?为什么下划线语法不起作用?