質問: new List(); void Start () { abc.Add(ButtonList[0].OnClickAsObservable()); abcHash.Add(abc[0].GetHashCode()); abc.Add(ButtonList[1].OnClickAsObservable()); abcHash.Add(abc[1].GetHashCode()); abc.Add(ButtonList[2].OnClickAsObservable()); abcHash.Add(abc[2].GetHashCode()); abc.Add(ButtonList[3].OnClickAsObservable()); abcHash.Add(abc[3].GetHashCode()); foreach(IObservable test in abc) { test.Subscribe( _ => ButtonClicked(abcHash.IndexOf(test自身のハッシュ値を取得したい))) ); } } private void ButtonClicked(int index) { Debug.Log("index=" + index.ToString()); } ```
回答: 各ループ中の変数に`i`の値を代入しておけばラムダ式から参照できます。 ``` for(int i = 0; i < abc.Count; i++) { int n = i; // ループ内の変数に代入 abc[i].Subscribe( _ => ButtonClicked(n) ); } ``` なお`i`のスコープは各ループの外であるため最終的に値が`abc.Count`となり、参照すると意図した動作にはなりません。