Scalaさんクロージャ
適当に手を動かしてみる。文書はちゃんと読んでない。
scala> def makeCounter(): ()=>Int = { | var num = 0 | def counter(): Int = { | num += 1 | return num | } | return counter | } makeCounter: ()() => Int scala> val c1 = makeCounter c1: () => Int = <function> scala> val c2 = makeCounter c2: () => Int = <function> scala> c1() res31: Int = 1 scala> c2() res32: Int = 1 scala> c1() res33: Int = 2 scala> c1() res34: Int = 3 scala> c2() res35: Int = 2
おもしろい。あと、Javaのライブラリにはそれなりに慣れてるから、便利に使えそうだ。