匿名関数とクロージャ
インライン関数で変数を取り込む
「匿名関数とクロージャ」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
名前のない関数
関数を一度だけ使い、その後は必要としないことがあります。匿名関数には名前がなく、使う場所に直接記述します。✨
基本の形
匿名関数は、前に名前を置かず、パラメーターと本体だけで構成します。変数に格納することもできます。
var greet = (String n) {
print('Hi ' + n);
};格納した関数の呼び出し
格納した後は、名前付き関数と同じように、かっこを使って変数経由で呼び出します。
greet('Ada');インラインで1つ渡す
匿名関数は、メソッドに直接渡すことが最も一般的です。ここではforEachが各要素に対して匿名関数を呼び出します。
[1, 2, 3].forEach((n) {
print(n * 2);
});アロー匿名関数
本体が1つの式で済む場合は、匿名関数とアローを組み合わせると、簡潔に書けます。
var doubled = [1, 2, 3].map((n) => n * 2);クロージャとは
クロージャとは、作成された場所の変数を記憶している関数です。外側のスコープが終了した後でも、その変数を覚えています。
変数をキャプチャする
次の内側の関数はstepをキャプチャします。後で返された関数を呼び出すたびに、その値を使い続けます。
Function adder(int step) {
return (int x) => x + step;
}クロージャはそれぞれ独立している
ファクトリを2回呼び出すと、それぞれのクロージャは別々にキャプチャした値を保持します。互いに干渉することはありません。
var add5 = adder(5);
var add10 = adder(10);クロージャは状態を保持する
キャプチャした変数は呼び出しの間に変更できるため、クロージャに小さなカウンターのように進行状況を記憶させられます。
int count = 0;
var tick = () => ++count;重要な理由
コールバック、イベントハンドラー、リストのメソッドはすべてクロージャを利用します。必要なデータと振る舞いをひとまとめにできるのです。
小さく保つ
インラインクロージャは短い場合に力を発揮します。複雑になったら、他の人が読みやすいように適切な名前を付けましょう。
クイックチェック
関数をクロージャにするものは何ですか?
まとめ
1回限りの用途に使う匿名関数と、周囲の変数をキャプチャして独自の状態を保持するクロージャについて学びました。🎯
よくある質問
「匿名関数とクロージャ」レッスンは無料ですか?
はい。「匿名関数とクロージャ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「匿名関数とクロージャ」で何を学びますか?
インライン関数で変数を取り込む ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「匿名関数とクロージャ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 1行関数のアロー構文
- 匿名関数とクロージャ
- Nullable型と疑問符
- Null対応演算子:?.、??、!