👌

[Flutter]無名関数、匿名関数、即時関数、アロー関数の違い

に公開

◼︎無名関数/匿名関数(Anonymous Function)

無名関数と匿名関数は同じ意味

// 通常
final result = add(a, b);

int add(int a, int b) {
    return a + b;
}
// 無名関数
final result = (int a, int b) {
    return a + b;
}

関数名がないことで呼び出すことができないため使用する箇所に直接書かれる。
その場所でのみ実行される処理で、他の場所で使うことがない場合に使う。

◼︎アロー関数

関数の処理が1行の場合に使える書き方(通常の関数と無名関数のどちらの場合にも使える)
通常「(引数){処理内容}」となる関数を「(引数)=> 処理内容」の書き方で簡潔に書けるようになる

// 通常
int add(int a, int b) {
    return a + b;
}

// アロー関数
int add(int a, int b) => a + b;

◼︎即時関数

定義と同時に処理が実行される関数

((){
    // コード
})()

((){})の部分で関数を宣言、その後の()で関数を実行という意味らしい

◼︎無名関数と即時関数の使い分け

▼無名関数

コールバック関数
具体例:ボタンのクリックイベント(実際にボタンを押されるまで関数は実行されない)

▼即時関数

関数を定義すると同時に実行したい場合
具体例:条件に基づいて表示するWidgetを決定する場合(Widgetを表示する段階で条件分岐の判定を実施し表示するWidgetが決定されていなければならない)

Discussion