なるほどなぁ。
それで、C# でやってみると、
- using System;
- namespace Example
- {
- public class Program
- {
- public static void Main(string[] args)
- {
- Func<bool, Func<bool>> flipflop = p =>
- {
- p = !p;
- return (() => p = !p);
- };
- Func<bool> fl = flipflop(false);
- Console.WriteLine(fl());
- Console.WriteLine(fl());
- Console.WriteLine(fl());
- Console.WriteLine(fl());
- }
- }
- }
- /*
- * ビルド:
- *
- * gmcs flipflop.cs
- *
- * 実行:
- *
- * mono flipflop.exe
- *
- */
$ mono flipflop.exe False True False True
おおお、Closure -> JavaScript 版と同様なんだけど、なんだろう、この少し賢くなった感覚は。参考になりました。
0 件のコメント:
コメントを投稿