第一級オブジェクトとしての関数
データと同じように関数を渡して返す
「第一級オブジェクトとしての関数」は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); // 12Function型
すべての関数には、入力と出力を表す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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 関数の宣言と戻り値の型
- 位置指定パラメーターと名前付きパラメーター
- デフォルト値とrequired
- 第一級オブジェクトとしての関数