从函数中检索返回类型

时间:2018-02-25 13:47:45

标签: kotlin

我正在调查编译器如何根据return语句推断函数的返回类型。然后我遇到了困扰我的事情。

我有这个Kotlin功能:

Int

它可以返回StringAny,因此它的编译时类型为Any(即,如果您调用此函数并指定它返回变量的值,该变量的类型为>>> examples.ambigousTypeEval("cricket")::class examples.ambigousTypeEval("cricket")class kotlin.Int >>> examples.ambigousTypeEval("football")::class examples.ambigousTypeEval("football")class kotlin.String )。

但是,当我在kotlinc REPL中加载该代码并检查它的类型时,我为不同的输入获得了不同的类型......

(String) -> Any

这里发生了什么?

编辑:要清楚,我想知道如何找出该函数的编译时类型。即我期待看到类似的内容:{{1}}

1 个答案:

答案 0 :(得分:3)

解决编辑问题:

您必须首先获得对该功能的引用:

val func = examples::ambiguousTypeEval

这是KFunction个实例。

现在只需检索其returnType

val returnType: KType = examples::ambiguousTypeEval.returnType

在这种情况下,返回类型将是与KType对应的Any

您可以通过parameters检索参数类型。