scala函数式编程中可使用下划线来简化函数的定义,具体的规范是这样说的:
当函数参数,只在函数体中出现一次,而且函数体没有嵌套调用时,可以使用下划线来简化函数定义。
下面举个错误的例子:
上面的例子就是错误的,因为map方法的参数只是一个,在方法体((1),(5))中却出现了两次,这与下划线的规范定义就不同了。
所以正确的写法该是这样——不使用下划线简化:
我们再来看看reduce方法:
这样写就不错,为什么呢?原因就是reduce方法的参数是两个,在它的方法体中每个参数调用一次这就是正确的。
所以在scala中使用下划线,应当搞清楚所运用的方法的参数和该方法运行的逻辑,然后谨慎使用。
另外“匿名函数有多个括号嵌套的时候,不要使用_的简写方式 ,而应该用普通匿名函数的书写方式。比如 (x:Int,y:Int)=> (x*2)+f(y+2)”
还可以参考连接中博客:
https://www.iteye.com/blog/bit1129-2217669