有一个Array
ofInt
和一个没有参数的函数:
scala> val a = new Array[Int](5)
a: Array[Int] = Array(0, 0, 0, 0, 0)
scala> def f(): Int = 1
f: ()Int
我想用or将该函数f()
应用于数组。我尝试了以下方法。map()
transform()
第一种方法
scala> a.map(f)
<console>:14: error: type mismatch;
found : () => Int
required: Int => ?
a.map(f)
^
它失败了,我真的不明白为什么。
第二种方法
scala> a.map(x => f)
res1: Array[Int] = Array(1, 1, 1, 1, 1)
这个有效。但是,我声明了一个x
不在=>
. 似乎匿名函数至少需要一个参数。
- 不使用正确
x
吗? - 它甚至是一种糟糕的功能风格吗?
实际例子
举例说明为什么要使用它。想象一下,我有一个数组,在某个时刻我想变异为具有随机值:
val a = new Array[Int](5)
// ...
a.transform(x => random())