ゼロコストラッパーのExtension Type
実行時のオーバーヘッドなしで型をラップする
「ゼロコストラッパーのExtension Type」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
別のツール
extension typeは新しい機能です。既存の型をラップして新しいインターフェースを与えますが、実行時のコストはありません。
ボックス化せずにラップする
通常のラッパークラスとは異なり、extension typeは実行時にオブジェクトを追加しません。実行時には、単に基になる値そのものとして扱われます。
extension type UserId(int id) {}表現型
括弧内の値の型が表現型です。ここではUserIdは、実際にはより安全な名前を付けたintにすぎません。
extension type Meters(double value) {}簡単に作成する
extension typeはコンストラクターを呼び出すように、基になる値をそのまま渡して構築します。
var id = UserId(42);
var d = Meters(3.5);安全なメソッドを追加する
本体の中には、ラップされた値を操作するメソッドやゲッターを追加できます。これにより、値に本来の意味を持たせられます。
extension type Meters(double value) {
Meters plus(Meters o) => Meters(value + o.value);
}typedefより強力
typedefは単なる別名ですが、extension typeは独立した型です。そのため、UserIdと通常のintを誤って混在させることはできません。
int raw = 42;
// UserId u = raw; // error: not interchangeable基になるAPIを隠す
デフォルトでは、extension typeはラップされた型のメンバーを隠します。そのため、呼び出せるのは公開したメソッドだけです。
var m = Meters(2.0);
// m.toStringAsFixed(2); // not available unless exposedまたはimplementsで公開する
implementsを追加すると、基になる型のメンバーを転送できます。呼び出し側は、独自のAPIと基になる型の両方を使えるようになります。
extension type Score(int value) implements int {}
print(Score(9) + 1); // 10実行時のオーバーヘッドはゼロ
実際のオブジェクトは作成されないため、extension typeの実行時コストはありません。型安全性を追加コストなしで得られます。
ドメインIDに最適
UserIdやEmailのような型付き識別子に適しています。間違ったintを間違った引数に渡すことを防げます。
void load(UserId id) {}
load(UserId(7)); // load(7) would not compile拡張機能とextension typeの違い
拡張機能は共有される型にメソッドを追加します。一方、extension typeは値を包む新しい独立した型を作ります。
クイックチェック
最後の確認です。extension typeが特別なのはなぜでしょうか。
復習:extension type
extension typeについて学びました。これは表現型を包む独立した、コストゼロのラッパーであり、実行時のオーバーヘッドなしに、安全なIDや単位を扱うのに適しています。🏁
AI チューターと学ぶ Dart — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ゼロコストラッパーのExtension Type」レッスンは無料ですか?
はい。「ゼロコストラッパーのExtension Type」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「ゼロコストラッパーのExtension Type」で何を学びますか?
実行時のオーバーヘッドなしで型をラップする ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ゼロコストラッパーのExtension Type」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 最初のExtensionを書く
- Genericsに対するExtension
- 静的Extensionメンバーと競合
- ゼロコストラッパーのExtension Type