1. ホーム
  2. dart

[解決済み] Dartでimport/exportとpart/part ofを使い分けるとしたら?

2023-05-28 11:29:01

質問

の違いがよくわかりません。 part / part of そして import / export は、Dartでライブラリを使用するときに使用します。 例えば

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

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

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

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

どちらのシナリオも同じことをやっているように見えます。 どのような場合に partpart of よりも import ? また、以下のようなシナリオはありますか? import は機能しませんが partpart of になるのでしょうか?

どのように解決するのですか?

アップデート 2018/03

part そして part of は最近、コード生成のシナリオでますます多く使われるようになり (非推奨のトランスフォーマーの代わりに)、すぐになくなることはないでしょう。

のようなパッケージは built_value , json_serializable など、多くのものがこれに依存しています。

ディスカレッジは、1つのライブラリファイルを持ち、他のすべてのファイルがそのライブラリの一部であることによって、パッケージのすべてのファイルが1つのライブラリに結びつけられるパタンだけです。

オリジナル

Dartでは、プライベートメンバーは同じライブラリ内でアクセス可能です。 とのことです。 import で、ライブラリをインポートすると、そのライブラリのパブリックメンバにのみアクセスすることができます。また part / part of のようにすれば、1つのライブラリを複数のファイルに分割し、それらのファイル内の全てのコードからプライベートメンバーにアクセスすることができます。

上記のアップデートにおける以下の段落の説明を参照してください。

使用方法 part / part of は推奨されず、Dart チームはこれを取り除くことを検討しています。私は、彼らが "friend" のようなものを導入することを想定しています ( https://github.com/dart-lang/sdk/issues/22841 ) のようなものを導入し、2 つのライブラリが互いのプライベート メンバにアクセスできるようにすることを想定しています。 part / part of を追加しました (将来の Dart バージョンで追加されるかもしれません)。