2015-01-04 8 views
6

ダーツでライブラリを使用する場合、part/part ofimport/exportの違いを完全に理解していません。たとえば:Dartの部品/部品と輸入/輸出部品の組み合わせはいつですか?

one.dart: 
library one; 
part "two.dart"; 
Class One { 
}; 

two.dart: 
part of one; 
import 'somefile.dart'; 
Class Two { 
} 

library two; 
import 'somefile.dart'; 
export 'somefile.dart'; 
Class Two { 
} 

library one; 
import 'two.dart'; 
Class One { 
} 

対と

両方のシナリオは、同じことを行うように見えます。 importではなく、 partpart ofを使用すると便利なのはいつですか? importが動作しないシナリオがありますが、 partpart ofはどうなりますか?

答えて

15

、プライベートメンバーは同じライブラリ内でアクセス可能です。 importを使用すると、ライブラリをインポートしてその公開メンバーだけにアクセスできます。 part/part ofを使用すると、1つのライブラリを複数のファイルに分割し、これらのファイル内のすべてのコードに対してプライベートメンバーにアクセスできます。

part/part ofを使用することはお勧めできません。ダーツチームは、それを取り除くことを検討しています。私は彼らがpart/part of(多分将来のダーツ版で)を中断する前に、2つの図書館が互いの私的なメンバーに代わってアクセスできる「友人」(https://github.com/dart-lang/sdk/issues/22841)のようなものを紹介すると仮定します。

4

ダラーライブラリmylibというファイルがあり、そのファイルがlib/mylib.dartであるとします。

新しいライブラリを作成し、あなたのパッケージを使用したときに自動的に使用できるようにする他のライブラリを使用する場合、ライブラリを使用すると、その後、

import 'package:mypackage/mylib.dart'; 

としてmain.dartファイルに含めることができ

library mylib; 

// Definitions 

export

library mylib; 

export 'otherlib.dart'; 

// Definitions 

showキーワードは、ライブラリの一部(クラスなど)をインポート/エクスポートするために使用します。


あなたはここで間違っpart ofディレクティブを使用しています。 librarypart ofの両方を使用することはできません。これは、ライブラリに属する​​コンテンツを指定するために使用されます。たとえば、複数のファイル(部品)で、あなたのライブラリファイルを分割することができます:

library mylib; 

part 'src/class1.part'; 
// More parts 

そして、我々は別のファイルsrc/class1.partに指定された部分で持っている:

たちは、ファイルmylib.dartであるとしダートでmylib.dart

part of mylib; 

class Class1 { 
    /* ... */ 
} 
+0

ありがとうございます。ライブラリの一部とライブラリの使用は、単にタイプミスであったので、私はそれを将来の読みやすさのために編集しました。 – rchkm

+0

@Robert私はあなた自身のファイルをインポートする**間にジレンマを持っています(クラス定義、サービスなどを含むファイル)。私は、 'import'を使って各ファイルの依存関係を明確にしていますが、新しいものを使うたびにインポートを追加していますが、' part/part of 'はすべてを与えていますが、依存関係を知っている。また、メインライブラリファイルにはすべての依存関係があります。次に、私が感謝することは、メインライブラリファイルのトップレベル関数を作成することです。どう思いますか? –

+0

あなたはあなたが望むようにそれをすることができます:) – Robert

3

dartlang.orgサイトの記事では、part/part ofを避けることをおすすめします。

注: のライブラリを複数のDartファイルに分割できるパートディレクティブについて聞いたことがあります。 partを使用して を避け、ミニライブラリを作成することをお勧めします。

「ミニライブラリ」とは、srcの小さなライブラリダーツファイルで、メインライブラリにインポートされ、メインライブラリからエクスポートされます。