是否可以获取所有函数参数并将其传递给另一个?
def function funA(arg1: String, arg2: String, arg3: Int): Any = {
....
funB(arg1, arg2, arg3)
}
相反funB(arg1, arg2, arg3)
我想写一些类似funB(parentFun.args)
有可能吗?也许我应该使用一些反思?
答案 0 :(得分:4)
我假设如果你做了两次以上,你应该为可读性创建案例类,你可以做到
def funA(arg:(String,String,Int)): Any = {
(funB _).tupled(arg)
}
//and call it
funA("a","b",1)
如果您想在arg1
内使用arg2
,arg3
,funA
名称,
你可以
def funA(arg:(String,String,Int)): Any = {
val (arg1,arg2,arg3) = arg
println(arg1) //arg1 is arg._1
(funB _).tupled(arg)
}
答案 1 :(得分:0)
如果你的唯一目标是简洁,你真的应该远离反思。
如果你有一堆备用函数,都具有相同的签名,你可以将它们定义为如下函数:
Session::flush();
或者,如果你有一堆具有相同签名的函数,你可以将它隐藏在一个接口后面并使用好的多态性。