万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    コルーチンをラムダ式を活用して使用するとき C# Unity

    HogeクラスのYieldのあるメソッド

    public IEnumerator YieldFunction (string argStr, System.Action<Dictionary<string, object>> returnData)
    {
        WWWForm form = new WWWForm ();
        form.AddField ("hoge_form", argStr);
        WWW www = new WWW ("http://example.com/hoge", form);
        yield return StartCoroutine (WaitForRequest (www, returnData));
    }
    

    これに対し、Hogeクラスのインスタンスの格納された変数がhogeとする。

    Dictionary <string, object> returnValue = new Dictionary<string, object> ();
    yield return StartCoroutine (hoge.YieldFunction (user_id, value => returnValue = value));
    

    valueの仮引数に対して、返って来た値を保存するために「returnValue = value」がある。

    ちなみに、Lambda式部分は
    http://msdn.microsoft.com/en-us/library/vstudio/bb397687.aspx
    にある「(input parameters) => {statement;}」のような書き方で、
    こう書いてもOK。

    yield return StartCoroutine (hoge.YieldFunction (user_id, (value) => { returnValue = value; }));
    

    returnValueにはDictioanary型が返ってきます。