0Pricing
Dart Academy · レッスン

匿名関数とクロージャ

インライン関数で変数を取り込む

「匿名関数とクロージャ」は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. 1行関数のアロー構文
  2. 匿名関数とクロージャ
  3. Nullable型と疑問符
  4. Null対応演算子:?.、??、!
← Dart Academyに戻る