如何在类文件中放置Kotlin扩展?
也许这个问题是在官方文档中回答的,但是我没有看到它…
在Swift中,我们习惯写类似的东西
class Jazz { ... } extension Jazz { func swing() { ... } }
并把整个代码片段放在一个文件中,比如Jazz.swift
。
我们似乎无法在科特林做相应的事情? 我总是发现自己的自我写作,例如一个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") } } }
和Swift没有什么不同:
class Jazz { val a = "Jazz" } fun Jazz.swing() = a //////////// fun main(args: Array<String>) { print(Jazz().swing()) // >>> Jazz }
- Kotlin smartcasting近似于使用时的空值
- Kotlin Annotation:类型不匹配:推断类型是java.lang.Class <foo>,但java.lang.Class <out jet.Annotation>是预期的
- Android studio 2.3:无法初始化类org.jetbrains.kotlin.android.actions.NewKotlinActivityAction
- kotlin未解决的KDoc链接,但IntelliJ不喜欢导入修复它
- Kotlin不能在init中使用“this”
- Volley-Mysql,Kotlintypes不匹配错误
- 无法使Coverity Scan工作(Windows和Travis上的Java / Kotlin / Gradle 3.3)
- kotlin限定符注释被忽略
- 单元测试验证通过被调用的功能
- 在Kotlin中使用JPA双向引用的StackOverflowError
- 如何访问属性get()方法中的字段值