前記事の続き。
Arduinoでクロージャ、もっと簡単に書けないかな?
いろいろ試してたら、いけそうなのができた!
auto func = [] () {
int x = 0;
return [ = ]()mutable -> int {return x++;};
};
呼ぶたびに1だけ大きい数を返す関数です。
intを返すラムダ式を返すラムダ式を変数にauto型推論で保持してみました。
内側のラムダ式はコピーキャプチャでmutableです。
ちなみに今までは関数オブジェクトでこんなしてました。
class F {
private:
int i = 0;
public:
int operator()();
};
int F::operator()(){
return i++;
} ;
何か間違いやら問題点があればコメントおねがいします。