0Pricing
Dart Academy · レッスン

第一級オブジェクトとしての関数

データと同じように関数を渡して返す

「第一級オブジェクトとしての関数」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

関数は値です

Dartでは、関数は数値や文字列と同じfirst-classの値です。関数を保存したり、渡したり、返したりできます。🎁

関数を保存する

かっこを付けずに関数名を使うと、関数を変数に代入できます。そのvariableは、関数そのものを参照するようになります。

int triple(int x) => x * 3;
var f = triple;
f(4); // 12

Function型

すべての関数には、入力と出力を表すtypeがあります。明確にするために、Functionキーワードを使ってその型に名前を付けることもできます。

int Function(int) op = triple;

関数を渡す

関数は、別の関数のparameterにできます。受け取った側が後でその関数を呼び出すことで、コードを書き直さずに動作をカスタマイズできます。

int apply(int x, int Function(int) fn) {
  return fn(x);
}

高階関数

別の関数を受け取る、または返す関数をhigher-order関数と呼びます。柔軟で再利用可能な構成要素を実現します。

apply(5, triple); // 15

コールバックの動作

後で実行するために関数を渡すことをcallbackと呼びます。forEachのようなコレクションメソッドは、常にこのパターンを利用しています。

[1, 2, 3].forEach(print);

関数を返す

関数が別の関数を作成して返すこともできます。returned関数は、作成された場所の値を記憶することさえできます。

Function adder(int n) {
  return (int x) => x + n;
}

返された関数を使う

作成関数を呼び出し、その結果を保存してから、その結果を実行します。それぞれのclosureは、独自に取り込んだ値を保持します。

var add5 = adder(5);
add5(10); // 15

コレクション内の関数

関数は値なので、複数の関数をlistやmapに保存し、実行時にそのうちの1つを選んで実行できます。

var ops = [triple, add5];
ops[0](2); // 6

関数でマッピングする

mapのようなメソッドは関数を受け取り、各項目に適用します。これにより、変換処理を受け渡し可能な再利用できるvalueにできます。

[1, 2, 3].map(triple).toList(); // [3, 6, 9]

重要な理由

first-class関数を使うと、フラグではなくロジックを渡して動作をカスタマイズできます。これにより、DartとFlutter全体でのきれいなcompositionが可能になります。✨

クイックチェック

first-class関数の考え方を理解できたか確認してみましょう。

まとめ

これで、関数を保存、受け渡し、返却し、higher-orderヘルパーを作成できるようになりました。これはDartで関数型スタイルを使うための基礎です。🎉

よくある質問

「第一級オブジェクトとしての関数」レッスンは無料ですか?

はい。「第一級オブジェクトとしての関数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「第一級オブジェクトとしての関数」で何を学びますか?

データと同じように関数を渡して返す ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「第一級オブジェクトとしての関数」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数の宣言と戻り値の型
  2. 位置指定パラメーターと名前付きパラメーター
  3. デフォルト値とrequired
  4. 第一級オブジェクトとしての関数
← Dart Academyに戻る