Мне нужно написать функцию eval в Kotlin: поэтому
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 имеет несколько аргументов?