Как я могу написать (и вызвать) универсальную функцию Eval в Kotlin - PullRequest
0 голосов
/ 11 мая 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...