如何为Typealias的伴随对象定义扩展功能?

Jus*_*Ngo 5 kotlin

我认为类型别名与原始类型相同,只是名称不同。

我认为类型别名与原始类型具有相同的引用。

typealias Celsius = Double

fun Double.Companion.foo() {} // Works
fun Celsius.Companion.foo() {} // Does not work
Run Code Online (Sandbox Code Playgroud)

在这里,Companion可以从访问,Double但是Celsius给出了未解决的参考错误。

hlu*_*kyi 6

不,您不能通过类型别名访问伴随对象。一种可能的解决方法,为具体的伴侣创建另一种类型别名:

typealias CelsiusCompanion = Double.Companion
Run Code Online (Sandbox Code Playgroud)

之后,您可以按以下方式使用它:

fun CelsiusCompanion.foo() {}
Run Code Online (Sandbox Code Playgroud)