在科特林您可以定義現有類的擴展方法和屬性屬性:製作擴展方法/全球上市
operator inline fun Vector2.plus(other: Vector2) = Vector2(x + other.x, y + other.y)
這樣一個做到這一點:
val result = Vector2(1.1f, 2.3f) + Vector2(2f, 4f)
有什麼辦法,我可以使這個擴展全局化,這樣我就不必在每個使用它的類中都導入它了?
在科特林您可以定義現有類的擴展方法和屬性屬性:製作擴展方法/全球上市
operator inline fun Vector2.plus(other: Vector2) = Vector2(x + other.x, y + other.y)
這樣一個做到這一點:
val result = Vector2(1.1f, 2.3f) + Vector2(2f, 4f)
有什麼辦法,我可以使這個擴展全局化,這樣我就不必在每個使用它的類中都導入它了?
你不能那樣做,因爲擴展方法是由編譯器靜態解析的。
沒有導入,編譯器不知道擴展名。
謝謝! Kotlin編譯器不知道,當你導入Vector2時,你也想使用Vector2的擴展方法。 – Joschua
擴展方法可能來自類路徑上的任何地方,因此沒有明確的關聯,編譯器將不得不掃描所有類。此外,你可能有衝突的擴展方法。最後,我認爲設計師想要明確這一點。 –
使用IDE時導入幾乎從不是問題,特別是IDEA – voddan