I have an issue where I have a class that stores a KCallable<Any>
and calls it using parameters passed in by an interpreter that's running a custom scripting language. This works for most functions when I use KCallable.call()
, but it doesn't seem to properly handle functions with a vararg
parameter, instead assuming that the parameter is an array of the given type. Is there any way I can work around this issue using some sort of reflection method to convert the input for the parameters? Here's my current code:
class KotlinFunction(function: KCallable<Any>) {
fun call(args: List<Any>) {
function.call(*args.toTypedArray())
}
}
given the function as class member:
fun concat(vararg xs: String) = xs.reduce{l,r -> l + r}
Using 3 parameters, I get the following error:
java.lang.IllegalArgumentException: Callable expects 1 arguments, but 3 were provided.
Aucun commentaire:
Enregistrer un commentaire