ロバメモ - 素人のUnity覚書と奮闘記

素人のUnity覚書と奮闘記

デリゲート,コールバック,ラムダ式,非同期とやらを調べてみた④ラムダ式

前記事:デリゲート,コールバック,ラムダ式,非同期とやらを調べてみた③コールバック - ロバメモ - 素人のUnity覚書と奮闘記

ラムダ式とは

ラムダ式とは、関数を匿名で書けるようになる書式のことって感じかな。

void Hoge(string s){
    var str = "Hello "+s;
    Debug.Log(str);
}

こんな感じ(↑)の関数を、こんな感じ(↓)に書ける。

(s) => {
    var str = "Hello "+s;
    Debug.Log(str);
}

処理内容が一行の場合

処理内容が一行なら{ }も省略できる。

(s) => Debug.Log("Hello "+s);

引数を持たない場合

引数を持たない場合は()だけになる。

()=> Debug.Log("Hello");

使い方

下のコードは、TriggerMethodの引数がデリゲートになってて、Start時にCallback()が割り当てられている。

//最初に実行するメソッド
void TriggerMethod(Action callback)
{
    Debug.Log("Trigger");
    callback();
}

//デリゲートが参照するメソッド
void Callback()
{
    Debug.Log("Callback");
}

void Start()
{
    //最初のメソッドを実行
    TriggerMethod(Callback);
}

このコード(↑)をラムダ式を使って書くと、Callback()を省略できるのでこんな感じ(↓)になる。

//最初に実行するメソッド
void TriggerMethod(Action callback)
{
    Debug.Log("Trigger");
    callback();
}

void Start()
{
    TriggerMethod(() => Debug.Log("Callback"));
}

こんな感じで、デリゲートで参照したいメソッドをわざわざ別立てしなくても続けて書けるようになるので、名前を付ける手間も省ける。

これを踏まえて、次は非同期について

次の記事: デリゲート,コールバック,ラムダ式,非同期とやらを調べてみた⑤非同期 - ロバメモ - 素人のUnity覚書と奮闘記

関連記事

Delegate
ActionとFunc
コールバック
ラムダ式
非同期