如何在类文件中放置Kotlin扩展?

时间:2017-08-30 07:03:50

标签: kotlin kotlin-extension

也许这个问题已在official doc中得到解答,但我没有看到它......

在Swift中,我们习惯于编写像

这样的东西
class Jazz {
...
}

extension Jazz {
    func swing() {
    ...
    }
}

并将整个代码段放在一个文件中,例如Jazz.swift

我们似乎无法在Kotlin做相应的事情?我总是找到自己的写作,例如一个Jazz.kt和一个JazzExtensions.kt,它根本不是构建代码的最清晰方式。

对此的任何意见表示赞赏。

2 个答案:

答案 0 :(得分:2)

您可以将扩展功能放在班级内部或外部:

外:

class Jazz { ... }

fun Jazz.bar() {
    println("hello")
}

内部(companion object):

import YOUR_PACKAGE.Jazz.Companion.bar

fun main(args: Array<String>) {
    Jazz().bar()
}

class Jazz {
    companion object {
        fun Jazz.bar() {
            println("hello")
        }
    }
}

答案 1 :(得分:1)

Swift

没有什么不同
class Jazz {
    val a = "Jazz"
}

fun Jazz.swing() = a

////////////

fun main(args: Array<String>) {
    print(Jazz().swing()) // >>> Jazz
}