Возможно, вы хотите Function1
, так как вы хотите передать один параметр.Function0
, как следует из названия, принимает нулевые параметры.Я предпочитаю использовать от A => B
до Function1[A,B]
, поэтому я напишу это так.(Обратите внимание, что все функции имеют одно возвращаемое значение.)
class MyClass(fns: Seq[Array[_] => Unit]) {
def foo(parms: Seq[Array[_]]) {
for ((f,p) <- fns zip parms) {
f(p)
}
}
}
Кроме того, Array
и только Array
не является универсальным.Вы не можете передать Array[Int]
или Array[String]
для Array[_]
.Таким образом, вышеприведенное, вероятно, не делает то, что вы хотите:
scala> new MyClass(Seq((a: Array[_]) => println(a.length)))
res0: MyClass = MyClass@3fee3c8d
scala> new MyClass(Seq((a: Array[String]) => println(a.mkString)))
<console>:9: error: type mismatch;
found : Array[String] => Unit
required: Array[_] => Unit
new MyClass(Seq((a: Array[String]) => println(a.mkString)))
scala> new MyClass(Seq(((a: Array[String]) => println(a.mkString)).asInstanceOf[Array[_]=>Unit]))
res4: MyClass = MyClass@4b9cee52
scala> new MyClass(Seq(((a: Array[Int]) => println(a.sum)).asInstanceOf[Array[_]=>Unit]))
res5: MyClass = MyClass@2357f593
scala> res5.foo(Seq(Array(1,2,3).asInstanceOf[Array[_]]))
6
Тьфу!Может быть, вы можете найти другой способ представить то, что вы хотите?(Так как я не знаю ваш вариант использования, я стесняюсь рекомендовать что-нибудь.)