kotlin - 如何从具有相同签名的方法或扩展函数调用顶级函数?

标签 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 ?

最佳答案

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

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

关于kotlin - 如何从具有相同签名的方法或扩展函数调用顶级函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45059018/

相关文章:

android - Kotlin 数据类中的函数作为参数导致分割错误

android-studio - Kotlin预定义代码样式同步与官方指南

android - 为什么 TextView 中的文本在回收器 View 中被截断?

java - 是否可以在 Kotlin 中使用 println 作为函数引用

java - 两个 observables 指向同一个引用

java - Kotlin 替代 javah

arrays - Kotlin 和泛型,用泛型数组实现抽象泛型类

java - Firebase token 生成器在 APN 中失败

android - 在可空接收器类型的 arraylist 上只允许安全或非空断言调用

android - IntentService (kotlin) 的默认构造函数