在C#中,我可以表示如下的函数表达式
Expression<Func<int, int, int>> add = (a, b) => a + b;函数表达式的字符串表示形式如下
(a,b) => (a + b)
在Kotlin中,我可以表示如下的函数表达式
val add = { a: Int, b: Int -> a + b }函数表达式的字符串表示形式如下
( kotlin.Int,kotlin.Int) -> kotlin.Int
Kotlin是否有一种方法可以表示更符合C#的函数表达式,显示输入参数和函数体?
发布于 2019-05-25 14:16:45
val add = { a: Int, b: Int -> a + b }等于
Func<int, int, int> add = (a, b) => a + b;不是对Expression<...>。如果你把它打印出来,你会看到类似System.Func<int, int, int>的东西,就像在科特林。
我不认为Kotlin在标准库中有类似Expression的类型,也不认为您可以在没有语言支持的情况下实现它。它的反射API比Java的更丰富(参见KFunction),但不允许您访问主体。您可以使用字节代码操作库来完成这一任务,但这将是一项艰巨的工作。
https://stackoverflow.com/questions/56303927
复制相似问题