是否可以修改函数参数? (类似于 C++ 中的 &)

Is it possible to modify a function argument? (like & in C++)

 actor Test
     fun foo(a: U32) =>
        a = a + 1

我要test.foo(a)修改a。这可能吗?谢谢

您只能在 class 级别修改 var。这是故意的,因为 actor 不喜欢就地更新——它真的不适合无锁并发。

函数,默认情况下,具有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())

Playground