在 Kotlin 中,以下似乎是合理的代码:
data class Foo(val bar: String) {
fun combine(other: Foo): Foo {
return Foo(bar + other.bar)
}
companion object Foo {
fun someHelper() {}
}
}
但是,它不会编译:类型Foo
绑定到Foo.Foo
而不是Foo
!
这是一个(语言设计或编译器)错误,还是一个特性?combine
如果是后者,在存在伴随对象的情况下实现的惯用方式是什么?
当然,我会考虑一种解决方法:
fun combine(other: my.package.Foo): my.package.Foo {
return Foo(bar + other.bar)
}
但这不太好,现在是吗?