使扩展方法/属性可用于全局

Jos*_*hua 4 extension-methods kotlin

在Kotlin中,您可以为现有类定义扩展方法和属性:

operator inline fun Vector2.plus(other: Vector2) = Vector2(x + other.x, y + other.y)
Run Code Online (Sandbox Code Playgroud)

这允许人们这样做:

val result = Vector2(1.1f, 2.3f) + Vector2(2f, 4f)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以让这个扩展全局化,这样我就不必在每个使用它的类中导入它了吗?

Ing*_*gel 7

您不能这样做,因为编译器会静态解析扩展方法.

如果没有导入,编译器就不知道扩展名.

  • 扩展方法可以来自类路径上的任何位置,因此没有明确的关联,编译器必须扫描所有类.此外,您可能会有冲突的扩展方法.最后我认为设计师想要明确这一点. (3认同)