我们目前正在将项目转换为Kotlin,并遇到以下问题:
我们只需要在给定的类中使用特定的扩展函数。因此,我们有两种可能性:(1)在文件顶部声明扩展函数为
以下是一个MCVE示例:
顶层示例(文件
在类示例中(文件
我们只需要在给定的类中使用特定的扩展函数。因此,我们有两种可能性:(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
的结构?