您只能var
在类级别修改 s。这是故意的,因为参与者不喜欢就地更新——它真的不适合无锁并发。
默认情况下,函数具有该box
功能,这意味着此函数操作的数据是只读的。为了确保函数可以改变数据,需要声明该方法fun ref
。
actor Main
var i: U32 = 0
fun ref foo() =>
i = i + 1
new create(env: Env) =>
env.out.print(i.string())
foo()
env.out.print(i.string())
操场