如何从相同签名的方法或扩展函数调用顶层函数?

我使用kotlin 1.1.2-2

我想从方法Mul2.plus100(Int):Int调用顶级函数Mul2.plus100(Int):Int 。 我试图在下面的代码中做到这一点,但实际上Mul2.plus100本身被称为。

 class Mul2 { fun plus100(v: Int): Int = plus100(2 * v) } fun plus100(v: Int): Int = v + 100 fun main(args: Array<String>) { val v = Mul2() println(v.plus100(10)) // expected: "120", actual: StackOverflowError } 

有没有plus100Mul2.plus100访问Mul2.plus100

你可以使用函数所在的包来引用它:

 package pckg fun plus100(v: Int): Int = v + 100 class Mul2 { fun plus100(v: Int): Int = pckg.plus100(2 * v) } 

你也可以用一个import as来重命名这个函数 – 如果它来自另一个文件或者包,这更有意义,但是也可以在单个文件中运行:

 package pckg import pckg.plus100 as p100 fun plus100(v: Int): Int = v + 100 class Mul2 { fun plus100(v: Int): Int = p100(2 * v) }