如何在 class 文件中放置 Kotlin 扩展?
How to place a Kotlin extension in a class file?
也许 official doc 中回答了这个问题,但我没看到...
在Swift中我们习惯这样写
class Jazz {
...
}
extension Jazz {
func swing() {
...
}
}
并将整个代码片段放在一个文件中,比如 Jazz.swift
。
我们好像不能在Kotlin中做相应的事情?我总是发现自己在写作,例如一个 Jazz.kt
和一个 JazzExtensions.kt
,这并不总是最清晰的代码结构方式。
感谢任何对此的意见。
您可以将扩展函数放在 class 内部或外部:
外面:
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")
}
}
}
与Swift差别不大:
class Jazz {
val a = "Jazz"
}
fun Jazz.swing() = a
////////////
fun main(args: Array<String>) {
print(Jazz().swing()) // >>> Jazz
}
也许 official doc 中回答了这个问题,但我没看到...
在Swift中我们习惯这样写
class Jazz {
...
}
extension Jazz {
func swing() {
...
}
}
并将整个代码片段放在一个文件中,比如 Jazz.swift
。
我们好像不能在Kotlin中做相应的事情?我总是发现自己在写作,例如一个 Jazz.kt
和一个 JazzExtensions.kt
,这并不总是最清晰的代码结构方式。
感谢任何对此的意见。
您可以将扩展函数放在 class 内部或外部:
外面:
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")
}
}
}
与Swift差别不大:
class Jazz {
val a = "Jazz"
}
fun Jazz.swing() = a
////////////
fun main(args: Array<String>) {
print(Jazz().swing()) // >>> Jazz
}