Scala - 使用匿名函数 shorthand 进行连续的 map() 调用
Scala - Using anonymous function shorthand for successive map() calls
所以这行得通
@ val arr = Array(1.1,2.2,3.3)
arr: Array[Double] = Array(1.1, 2.2, 3.3)
@ val mean = arr.sum / arr.length
mean: Double = 2.1999999999999997
@ arr.map(_ - mean).map(x => x + x)
res3: Array[Double] = Array(-2.1999999999999993, 8.881784197001252E-16, 2.2)
但这不是
@ arr.map(_ - mean).map(_ + _)
cmd4.sc:1: missing parameter type for expanded function ((<x: error>, x) => x.$plus(x))
val res4 = arr.map(_ - mean).map(_ + _)
^
cmd4.sc:1: missing parameter type for expanded function ((<x: error>, <x: error>) => x.$plus(x))
val res4 = arr.map(_ - mean).map(_ + _)
^
Compilation Failed
我真的很想知道为什么。
lambda 中的每个 _
都是一个 不同的 参数,所以这个
.map(_ + _)
其实就是
.map((x, y) => x + y)
这是一个错误,因为 map
需要一个 single-argument 函数。
所以这行得通
@ val arr = Array(1.1,2.2,3.3)
arr: Array[Double] = Array(1.1, 2.2, 3.3)
@ val mean = arr.sum / arr.length
mean: Double = 2.1999999999999997
@ arr.map(_ - mean).map(x => x + x)
res3: Array[Double] = Array(-2.1999999999999993, 8.881784197001252E-16, 2.2)
但这不是
@ arr.map(_ - mean).map(_ + _)
cmd4.sc:1: missing parameter type for expanded function ((<x: error>, x) => x.$plus(x))
val res4 = arr.map(_ - mean).map(_ + _)
^
cmd4.sc:1: missing parameter type for expanded function ((<x: error>, <x: error>) => x.$plus(x))
val res4 = arr.map(_ - mean).map(_ + _)
^
Compilation Failed
我真的很想知道为什么。
lambda 中的每个 _
都是一个 不同的 参数,所以这个
.map(_ + _)
其实就是
.map((x, y) => x + y)
这是一个错误,因为 map
需要一个 single-argument 函数。