使用其参考ARGS函数考虑下面的代码:调用与斯卡拉
object HelloIntelliScala {
def main(args : Array[String]) = {
println(callAnyFunc(funcWithNoArgs))
val l = callAnyFuncWithArgs("bingo") (funcWithArgs)
println(l)
val l2 = callAnyFuncWithArgs(21) (funcWithArgs2)
println(l2)
}
type noArgCallBack =() => Any
def funcWithArgs(inp : String) : Any = {
println("Func with arg called, arg value is: " + inp)
"Hello " + inp + "!"
}
def funcWithArgs2(inp : Int) : Any = {
println("Func with arg called, arg value is: " + inp)
"Hello, integer " + inp + "!"
}
//how do i call this function?
def funcWithArgs3(inp : Int, name : String) : Any = {
println("Func with 2 args called, arg values are: " + (inp, name))
"Hello, multiple args " + (inp, name) + "!"
}
def funcWithNoArgs() : Any = {
println("Function with no args was called!")
"Hello NO_ARGS"
}
def callAnyFunc(callback : noArgCallBack) : Any = {
callback();
}
def callAnyFuncWithArgs[A, B](arg : A)(f : A => B) : Any = {
f(arg); //how do I pass variable args here
}
}
我需要一个通用的方法来调用带参数的任何功能,就像一个不带参数。请注意,要传递的参数列表可以是可变的,我们不知道编译时的参数类型。此外,我确实需要Any返回类型,因为我需要将此值用于后期处理。有没有办法做到这一点?
为了澄清,我需要使用泛型调用机制调用多个这样的函数。 – 2012-04-17 08:17:01
[loan pattern](https://wiki.scala-lang.org/display/SYGN/Loan)有帮助,但我仍然无法弄清楚如何使它适用于变量arg列表。 – 2012-04-17 08:43:46
已更新代码以包含贷款模式,以允许我调用只接受一个参数的函数,如何将它扩展为变量参数列表? – 2012-04-17 08:48:50