在您不知道函数参数的情况下(例如,您希望在其上使用反射等),将Scala中的函数引用传递给另一个函数的最佳方法是什么?
我正在尝试定义这样的内容:
def test(f: (Any*) => Any) = ... // Any implementation
并使用like:
调用它def somefunc( arg1 : String, arg2 : Int, ... ) = {} // Any function with any arguments
test(somefunc) // Pass the reference to the function
可以做到吗?
答案 0 :(得分:1)
这取决于您稍后要对该功能执行的操作。一个简单的解决方案是使用泛型:
line 5: j: command not found
答案 1 :(得分:0)
要扩展@Jens的答案,使用相同的想法可以添加多个参数:
scala> def somefunc( arg1 : String, arg2: String ) = {println(arg1 + arg2)}
def test[X,Y,Z]( f : (X,Y) => Z) = f
test( somefunc )("foo", "bar")
输出:
somefunc: (arg1: String, arg2: String)Unit
scala> test: [X, Y, Z](f: (X, Y) => Z)(X, Y) => Z
scala> foobar