Arrays 如何将0元匿名函数应用于数组
具有Arrays 如何将0元匿名函数应用于数组,arrays,scala,map-function,arity,Arrays,Scala,Map Function,Arity,具有Int的数组,以及不带参数的函数: scala>val a=新数组[Int](5) a:Array[Int]=数组(0,0,0,0,0) scala>def():Int=1 f:()Int 我想用map()或transform()将函数f()应用于数组。我尝试了以下方法 第一种方法 scala>a.map(f) :14:错误:类型不匹配; 找到:()=>Int 必需:Int=>? a、 地图(f) ^ 它失败了,我真的不明白为什么 第二种方法 scala>a.map(x=>f) res1
Int
的数组
,以及不带参数的函数:
scala>val a=新数组[Int](5)
a:Array[Int]=数组(0,0,0,0,0)
scala>def():Int=1
f:()Int
我想用map()
或transform()
将函数f()
应用于数组。我尝试了以下方法
第一种方法
scala>a.map(f)
:14:错误:类型不匹配;
找到:()=>Int
必需:Int=>?
a、 地图(f)
^
它失败了,我真的不明白为什么
第二种方法
scala>a.map(x=>f)
res1:Array[Int]=数组(1,1,1,1,1)
这个有效。但是,我声明了一个参数x
,我没有在=>
的右侧使用它。似乎匿名函数至少需要一个参数
- 不使用
正确吗x
- 这是一种糟糕的功能性风格吗
val a=新数组[Int](5)
// ...
a、 变换(x=>random())
像这样尝试使用for ignored参数
a.map(_ => f)
哪个输出
res0: Array[Int] = Array(1, 1, 1, 1, 1)
只是为了玩转换:
def to1[A, B](f: () => B): A => B = (_: A) => f()
val a = new Array[Int](5)
def f(): Int = 1
a.map(to1(f))
关于您的示例,考虑使用<代码>填充< /代码>:
val b = Array.fill[Int](a.size)(myArgLessFunc())
a.map(=>f())
将是最好的。第一个选项失败,因为map需要一个接受一个输入的函数。