2016-07-15 83 views
4

在科特林您可以定義現有類的擴展方法和屬性屬性:製作擴展方法/全球上市

operator inline fun Vector2.plus(other: Vector2) = Vector2(x + other.x, y + other.y) 

這樣一個做到這一點:

val result = Vector2(1.1f, 2.3f) + Vector2(2f, 4f) 

有什麼辦法,我可以使這個擴展全局化,這樣我就不必在每個使用它的類中都導入它了?

+0

使用IDE時導入幾乎從不是問題,特別是IDEA – voddan

回答

7

你不能那樣做,因爲擴展方法是由編譯器靜態解析的。

沒有導入,編譯器不知道擴展名。

+1

謝謝! Kotlin編譯器不知道,當你導入Vector2時,你也想使用Vector2的擴展方法。 – Joschua

+3

擴展方法可能來自類路徑上的任何地方,因此沒有明確的關聯,編譯器將不得不掃描所有類。此外,你可能有衝突的擴展方法。最後,我認爲設計師想要明確這一點。 –