静的Extensionメンバーと競合
衝突を解決し、静的ヘルパーを追加する
「静的Extensionメンバーと競合」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
2つのヘルパー、同じ名前
Stringにparseという名前のメソッドを追加する2つの拡張機能をインポートすると、Dartはどちらを意図したのか判断できなくなります。
競合が起きる理由
拡張機能のメンバーは型そのものに属していないため、同じ名前のメソッドが2つあると、コンパイラーは推測できない曖昧さとして扱います。
エラーを見つける
このような場合、Dartは曖昧な拡張機能があると報告して停止します。黙ってどちらかを選ぶことはありません。
"7".parse(); // error: ambiguous between two extensionsインポート時に一方を非表示にする
インポートにhideを指定すると、名前で競合する拡張機能の一方を除外し、もう一方が呼び出しに使われるようにできます。
import 'b.dart' hide NumberParsing;または1つだけ表示する
反対の方法がshowです。指定した名前だけをインポートし、それ以外を静かに除外します。
import 'a.dart' show NumberParsing;明示的に呼び出す
明示的な適用を使って正確に指定することもできます。拡張機能の名前を記述し、値を括弧内に渡します。
NumberParsing("7").parse();静的メンバーを追加する
拡張機能には静的メンバーも追加できます。静的メンバーはメソッドを呼び出す値ではなく、拡張機能の名前に属します。
extension MathX on num {
static num clampLow(num x) => x < 0 ? 0 : x;
}名前で静的メンバーにアクセスする
静的メンバーは拡張機能の名前を通して、クラスの静的メンバーと同じように呼び出します。レシーバーの値は関係ありません。
print(MathX.clampLow(-3)); // 0静的メンバーには名前が必要です
静的メンバーには拡張機能を通してアクセスするため、名前のない拡張機能では公開できません。静的メンバーを使うには名前を付けてください。
インスタンスメンバーと静的メンバー
インスタンスメンバーはthisを使い、値に対して動作します。静的メンバーは値を無視し、拡張機能そのものに属します。
衝突を避ける設計をする
拡張機能とメンバーには、明確で具体的な名前を付けます。適切な命名をすれば、showやhideが必要になる前に、ほとんどの競合を防げます。
クイックチェック
1つの競合に、1つのすっきりした解決策があります。どれが有効でしょうか。
復習:静的メンバーと競合
show、hide、明示的な呼び出しで競合する拡張機能を解決でき、拡張機能の名前を通してアクセスする静的メンバーも追加できることを学びました。🧩
AI チューターと学ぶ Dart — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「静的Extensionメンバーと競合」レッスンは無料ですか?
はい。「静的Extensionメンバーと競合」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「静的Extensionメンバーと競合」で何を学びますか?
衝突を解決し、静的ヘルパーを追加する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「静的Extensionメンバーと競合」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 最初のExtensionを書く
- Genericsに対するExtension
- 静的Extensionメンバーと競合
- ゼロコストラッパーのExtension Type