在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#的函数表达式,从而显示输入参数和函数主体?
答案 0 :(得分:1)
val add = { a: Int, b: Int -> a + b }
等同于
Func<int, int, int> add = (a, b) => a + b;
不要Expression<...>
。而且,如果您进行打印,则会看到类似System.Func<int, int, int>
的内容,例如Kotlin中的内容。
我不认为Kotlin在标准库中没有类似Expression
的类型,或者您可以在没有语言支持的情况下实现它。它的反射API比Java的丰富(请参见KFunction
),但不允许您访问主体。您可以使用字节码操作库来做到这一点,但这会花费很多时间。