是否可以修改函数参数? (类似于 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())
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())