:= 与 Ref 相关语义
语法
:= 预留给引用单元或位置更新类语义。
语义
它更接近对 Ref[T] 或类似可写位置的赋值,而不是普通绑定。
level-1 规定 := 的结果值是右侧表达式的值。
因此:
x := y
在更新左侧位置之后,整个表达式求值为 y 的结果值。
这使 := 可以参与链式表达:
a := b := c
level-1 当前方向把 := 置于倒数第二弱优先级。
也就是说:
:=比|>更弱:=只强于最外层的=绑定/定义语法
= 本身不作为普通 operator 进入表达式运算符体系。
:= 的链式写法按右结合理解:
a := (b := c)
Usage
cell := 1
let x = a := b := c
注释:第一行展示 := 用于更新位置,第二行展示它返回右值,因此可以参与链式表达。
边界
需要单独明确:
:=的左值集合- 与 record update 的职责边界
- 左值求值与右结合更新的精确求值顺序