如何在类文件中放置Kotlin扩展?
也许这个问题在official doc回答,但我没有看到它...如何在类文件中放置Kotlin扩展?
在斯威夫特我们习惯于写类似
class Jazz {
...
}
extension Jazz {
func swing() {
...
}
}
,并放置在一个整体的代码段文件,说Jazz.swift
。
我们似乎无法在Kotlin中做相应的事情?我总是发现自己的写作,例如一个Jazz.kt
和一个JazzExtensions.kt
,这并不总是构建代码的最清晰的方式。
对此有任何意见。
您可以将扩展功能类的内部或外部:
外:
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")
}
}
}
谢谢!尽管如此,我仍然缺少一个'extension'关键字。也许在明亮的Kotlin未来。 – Algar
这不是从斯威夫特很大的不同:
class Jazz {
val a = "Jazz"
}
fun Jazz.swing() = a
////////////
fun main(args: Array<String>) {
print(Jazz().swing()) // >>> Jazz
}
哈哈哈,我可以发誓我已经试过了......该死,这让尴尬很快:)。感谢您的回答,但我已经接受@ guenhter的,因为这是更详细的。 – Algar
他也是第一个:) –
是不是swift代码等同于将'class Jazz'和'fun Jazz.swing(){}'放在同一个Kotlin文件中? – BakaWaii
为什么你会使用扩展名,而不是只将该函数作为类中的普通函数添加? – s1m0nw1
@BakaWaii是的,显然它是:)。我发誓我以前曾尝试过,但没有运气:P。 – Algar