Star☆Unityメモ

Unityのちょっとしたことをメモって後で見返せれたらいいなサイト

ラムダ式を超簡単に解釈してコールバック処理を書いてみる

概要

ラムダ式の根本を全て理解しようとすると意外と面倒くさいので上辺だけの理解でコールバック処理を作ってみる

ラムダ式とは?

匿名メソッドや匿名関数を簡易的な書式で表現できちゃう。その書式がラムダ式

超ガバガバ解釈にすると 「メソッドを変数に入れられちゃうよ」ってわけ

一番簡単なラムダ式

Action

Action<int> SquaringValue = (x) =>{
    x = x * x;
    Debug.Log(x);
};
SquaringValue(2);

ざざっと説明すると, intは見ればわかるように引数の型を指定します,実際に引数の変数は(x)です.
矢印=>後に実際に行いたい処理を書いていきます.ステートメントブロックやね
以上です.複雑に考えなければ大したことはありませんね。(本当はちゃんと理解して使うべき)

コールバック処理を作ってみる

そもそもコールバックとは?

私は処理の委託だと考えています.
ラムダ式で考えるなら,メソッドへの参照を一つのオブジェクトとして扱い.メソッド参照を持つオブジェクトを転送します.
転送先でメソッド参照を持つオブジェクトを呼び出すことがコールバック

コード

とっても簡単です!メソッドを変数に入れて別メソッドに渡すだけです

メソッドの参照を持つオブジェクトを作り,オブジェクトをhoge関数に渡します

void Start () {
    Action<int> SquaringValue = (x) => {
        x = x * x;
        Debug.Log(x);
    };
    hoge(SquaringValue,2);
}

受け取ったオブジェクトに数値を渡してこちらでメソッドを呼び出します

void hoge(Action<int> ac, int value) {
    value = value * 2;
    ac(value);
}