Skip to content

77 词法引用 ​

&count 将可写局部位置借为 ref<Integer>;*target 读取并替换其中的值。引用只在调用期间有效,不能作为返回值逃逸。

norm
Void increment(ref<Integer> target) {
  *target = *target + 1
}

main() {
  Integer count = 3
  increment(target: &count)
  printLine(count)
}

预期输出:

text
4

动手试试:把 increment 的返回类型改为 ref<Integer> 并加入 return target;编译器会拒绝在返回类型使用 ref(NORM-TYPE-0001)。

精确规则:参考。

Norm 0.25