2016-03-25 19 views
10

「MyClass」の拡張メソッドがいくつかあるとします。 私の質問は、これらのメソッドを整理して保存するためのベストプラクティスは何ですか? "MyClassExtensions" Kotlinファイルに入れるだけですか?Kotlin拡張メソッドの構成方法

私はクラス内でこれらのメソッドをカプセル化しようとしましたが、クラスをインポートした後、拡張メソッドの使用方法やアクセス方法を理解できていないようです。

編集: 説明のために、拡張メソッドを含むファイルとは何を呼び出すべきかを尋ねていませんでした。私はベストプラクティス/そのような方法を保存/整理する方法について尋ねていました。つまり彼らは単にkotlinファイルに入れられるべきですか、それともそれらはクラスにカプセル化されるべきですか?私はJavaの背景から来ているので、私はクラスに物を格納するために使用されています。

+2

https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions –

+0

ありがとう、私は誤ってドキュメントのこの部分を見逃しているに違いありません。 – pjozsef

+0

'このようなメソッドを保存/整理するためのベストプラクティス/アプローチ 'この質問は非常に意見を基にしています – voddan

答えて

3

これまでのJavaコードと同じように、ユーティリティファイルに入れておく必要があります。

しかし、あなたはもはやそれらをクラスに入れる必要はありません。トップレベルの機能が最良の選択です。

kotlin標準ライブラリ、またはankoのようないくつかのオープンソースプロジェクトを参照することができます。これは良い例です。私の場合は

は、私は別のパッケージに、元のファイルと同じ名前を持つファイルに一つのクラスの拡張を入れて、生成されたクラスファイルの数を減らすために

@JvmMultifileClass 

を使用しています。

0

私の質問のコメントに記載されているように、Kotlinドキュメントのこの部分はかなりうまく説明しています。 https://kotlinlang.org/docs/reference/extensions.html#scope-of-extensions

+1

はい、あなたはどのように拡張メソッドを含むKTファイルを呼び出していますか? – mfulton26

+0

関数を含むCファイルとは何ですか?明らかに、これはそのファイルに含まれる関数に依存します。同じことがコトリンにも当てはまります。 (クラスに定義されているすべての拡張関数を1つのファイルに含める必要がある、またはすべきであるというルールは全くありません) – yole

+0

私の質問を編集して、私が求めていたことを明確にしました。 – pjozsef