如何在Kotlin中编写(和调用)通用eval函数

时间:2019-05-11 18:57:33

标签: function generics kotlin arguments

我需要在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 具有多个参数的情况?

0 个答案:

没有答案