我们目前正在将我们的项目切换到 Kotlin,并遇到以下问题:
我们只需要在给定类中的某个扩展函数。因此,我们有两种可能性:(1)private
在文件顶层声明扩展函数或(2)private
在类中声明扩展函数。
在MCVE之后:
顶级示例(文件C1.kt
):
private fun String.double() = this.repeat(2)
class C1 {
init {
println("init".double())
}
}
内部类示例(文件C2.kt
):
class C2 {
private fun String.double() = this.repeat(2)
init {
println("init".double())
}
}
问题:
这两种方法有什么区别,除了
C1.kt
扩展功能String.double()
对其他可能的文件成员(例如同一文件中的其他类)也是可见的?由于我们希望实现代码“尽可能 kotlinic”,因此我们想知道这两种方法中的哪一种是建议的方法。上面的示例是否有官方建议/样式指南?我认为将扩展函数声明为尽可能接近其预期用途被认为是一种良好的做法,因此在上面的示例中
C2
会建议使用的结构?