2016-07-15 61 views
4

メイク拡張メソッド/プロパティ

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

これは1がこれを行うことができます:

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

は、私ができる方法はありますこのエクステンションをグローバルにして、これを使用するすべてのクラスでこれをインポートする必要はありませんか?

+0

IDEを使用している場合、特にIDEA – voddan

答えて

7

拡張メソッドはコンパイラによって静的に解決されるため、これを行うことはできません。

インポートを行わないと、コンパイラは拡張機能について認識しません。

+1

をお持ちの場合、インポートはほとんど問題になりません。ありがとうございます! Kotlinコンパイラは 'Vector2'をインポートするときに' Vector2'の拡張メソッドも使いたいと考えています。 – Joschua

+3

拡張メソッドはクラスパスのどこからでも来る可能性があるので、明確な関連付けがなく、コンパイラはすべてのクラスをスキャンする必要があります。また、矛盾する拡張メソッドを持つこともできます。最後に、デザイナーはこれを明示的にしたいと思っていたと思います。 –