これはおそらくハーフベークされたアイデアですが、式の環境をコピーすることはできますか?次Scalaでクロージャをコピーすることはできますか?
6
7
8
9
しかし、私が本当にがしたいされています:私は次の出力を得る
class foo[T](block: => T) {
var data = {() => block }
def run() = { data() }
}
var a = 5
var b = new foo({ a += 1; println(a) })
var c = new foo({ a += 1; println(a) })
b.run()
c.run()
b.run()
c.run()
次の例を考えてみましょう要するに
6
6
7
7
、私はしfoo
をしたいですブロックを参照するのではなく、初期値が解決された時点で、変数をブロック内にコピーします。これはできますか? scala.util.DynamicVariableは有望そうですが、上記の例でどのように使用するかを理解するのは難しいです。
可変変数に対する警告は+1です。 –