我需要在Kotlin中编写一个eval函数:所以
eval(fn, a1,.., aN)
应该返回
fn(a1, .., aN)
只要 a1 .. aN 具有 fn 的正确类型。
到目前为止,我有:
fun <ArgsType, ResultType> evalFunction(fn: (ArgsType)-> ResultType, args: ArgsType)
: ResultType{
return fn(args)
}
这仅适用于带有一个参数的函数:
fun square(n: Int) : Int{
return n*n
}
evalFunction(::square, 5) returns 25
和
fun flSquare(x: Float) : Float{
return x * x
}
evalFunction(::flSquare, 7F) return 49.0
但不适用于具有多个参数的函数:
fun times(n: Int, m: Int) : Int{
return n*m
}
evalFunction(::times, 3, 5) "has too many arguments"
是否可以允许 fn 具有多个参数的情况?