Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将0元匿名函数应用于数组_Arrays_Scala_Map Function_Arity - Fatal编程技术网

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需要一个接受一个输入的函数。