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

时间:2017-07-12 13:26:52

标签: kotlin

我使用kotlin 1.1.2-2

我想从方法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
}

是否可以从plus100访问Mul2.plus100

1 个答案:

答案 0 :(得分:7)

您可以使用该功能所在的包来引用它:

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)
}