import std.stdio; int delegate()[string] createCounter(){ int cur = 0; int delegate()[string] aa; aa["next"] = {return ++cur;}; aa["prev"] = {return --cur;}; return aa; } void main(){ auto count = createCounter(); writefln(count["next"]());//1 writefln(count["next"]());//2 writefln(count["prev"]());//1 writefln(count["prev"]());//0 writefln(count["prev"]());//-1 }
ええー,後置インクリメント/デクリメントを前置に変えたら狙い通りになった.
評価順どうなってんのこれw
全然わかんね.