Kotlin-打印功能表达式

时间:2019-05-25 10:24:14

标签: kotlin

在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#的函数表达式,从而显示输入参数和函数主体?

1 个答案:

答案 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),但不允许您访问主体。您可以使用字节码操作库来做到这一点,但这会花费很多时间。