バナナラボ

Vtuber美作ワニのブログです

【実装のヒント】無名関数の活用(1)【Unity】

バナナラボの美作です。

今日は無名関数についての記事です!

Linqの記事でも実は無名関数は使われていますので、こちらも合わせて見てほしいです。 bananalabwani.hatenadiary.com

他にもジェネリック型も使うので先に読んでほしいです。 bananalabwani.hatenadiary.com

無名関数は文字通り、無名の関数です。 C#だと匿名関数と呼ぶ方が一般的のようです(たぶん)

docs.microsoft.com

例えばですが関数だと以下の実装になります。

public void Execute()
{
    int a = 0;
}

無名関数だと以下のような実装になります。

public void Start()
{
    System.Action execute = () => {
        int a = 0;
    };
    
    execute();
}

上記のように無名関数は関数を定義することなく実装することができます。 変数に格納された関数は複数回実行しても同じ振る舞いをします。 また引数の指定をすることもできます。

System.Action<int> execute = v => {
    Debug.Log(v);
};

execute(1);
execute(2);

複数の引数の指定も可能です。

System.Action<int, int> execute = (v1, v2) => {
    Debug.Log(v1);
    Debug.Log(v2);
};

execute(1, 2);

返却値がほしい場合の無名関数もあります。以下のように実装します。 関数の場合、最後のジェネリック値が戻り値になります。

System.Func<int, string> execute = v => {
    return v.ToString();
}

Debug.Log(execute(1)); // "1"と表示される

最後に

無名関数はまだまだいろんなことができるので、次回以降でまた紹介しようと思います。

宣伝

YouTubeでゲーム実況・ゲーム開発の動画投稿および配信をやっています! もしご興味があればチャンネル登録・高評価よろしくおねがいします!

www.youtube.com