built_collectionとは
built_collection
は、Dart言語用の不変コレクションを提供するパッケージです。
ビルダーパターンを使用して、コレクションの不変性を確保します。不変コレクションは、安全に共有できるため、防御的なコピーを行う必要がありません。built_collection
は、特に不変値と組み合わせて使用すると効果的です。
built_collection | Dart package
Immutable collections based on the SDK collections. Each SDK collection class is split into a new immutable collection c...
使い方
パッケージのインストール
まず、pubspec.yaml
ファイルにbuilt_collection
パッケージを追加します。
dependencies:
built_collection: ^5.1.1
その後、以下のコマンドを実行してパッケージをインストールします。
flutter pub get
基本的な使用方法
以下は、built_collection
パッケージの基本的な使い方の例です。この例では、不変リストとそのビルダーを使用します。
import 'package:built_collection/built_collection.dart';
void main() {
// 不変リストを作成
final BuiltList<int> builtList = BuiltList<int>([1, 2, 3]);
print('BuiltList: $builtList');
// ビルダーを使って不変リストを変更
final listBuilder = builtList.toBuilder();
listBuilder.add(4);
final BuiltList<int> newList = listBuilder.build();
print('New BuiltList: $newList');
// 不変マップの作成
final BuiltMap<String, int> builtMap = BuiltMap<String, int>({'one': 1, 'two': 2});
print('BuiltMap: $builtMap');
// ビルダーを使って不変マップを変更
final mapBuilder = builtMap.toBuilder();
mapBuilder['three'] = 3;
final BuiltMap<String, int> newMap = mapBuilder.build();
print('New BuiltMap: $newMap');
}
パラメータの詳細
BuiltList
BuiltList
は不変リストです。リストを変更する場合は、toBuilder
メソッドを使ってビルダーを取得し、変更を加えた後に再度build
メソッドを使って不変リストに戻します。BuiltList
はIterable
を実装していますが、List
を実装していません。
BuiltMap
BuiltMap
は不変マップです。マップを変更する場合は、toBuilder
メソッドを使ってビルダーを取得し、変更を加えた後に再度build
メソッドを使って不変マップに戻します。BuiltMap
はMap
を実装していません。
コレクションの不変性
built_collection
は、要素が不変である場合に不変性を保証します。- 不変コレクションは変更を加えるメソッドを提供しません。変更を行う場合は、必ずビルダーを使用します。
比較とハッシュ
built_collection
は、同じ型の他の不変コレクションと深い比較を行います。これにより、高速な比較が可能です。built_collection
は深いハッシュコードを計算し、キャッシュします。これにより、ハッシュセットやハッシュマップ内での使用が効率的になります。
無駄なコピーの回避
BuiltList.toList
やBuiltMap.toMap
などのメソッドは、コピーを作成せずにコアSDKコレクションとの互換性を提供します。- 変更不可コレクションを提供する場合、
BuiltList.asList
やBuiltMap.asMap
を使用して、変更が試みられた際に例外をスローするコレクションを作成できます。