语法
- with ( id := expression id := expression ... )
参数
- id - 标识符局部变量名称。
- expression -(浮点型、字符串、布尔、float[]、string[]、bool[])
待存储的值。
描述
with 关键字用于为一个定义依次定义一组局部变量。 在定义范围内,可以使用局部变量的标识符 id 对其进行引用。 不可以在定义范围之外访问这些变量。
可以为函数、属性、常数函数和规则定义局部变量。 expression 可引用当前定义范围之外的函数、属性和常量属性,以及局部变量列表中先定义的局部变量。
attr a with ( x := "example" ) = x
const b with ( x := [0,1,2] y := 0 ) = x[y]
f(a) with ( x := a y := x ) = y
Lot with ( x := f(1) ) --> extrude(x)
调用定义后,将计算局部变量的 expression 并存储其值。 当引用局部变量时,不会重新计算 expression。
在以下简单示例中,函数将在被调用时进行计算并将中间结果存储在局部变量 d1 和 d2 中。 每个局部变量将引用两次,以计算两点之间的距离。
dist2d(x1, y1, x2, y2) with ( d1 := x2-x1
d2 := y2-y1 )
= sqrt(d1*d1 + d2*d2)
Lot --> print("distance: " + dist2d(1,1,2,2)) // 1.414
以下规则将计算当前形状的面积并将其存储在局部变量中。 尽管形状的面积发生变化,但此值不变。
Lot with ( area := geometry.area() ) --> s('2,0,'2)
print("initial area: " + area)
print("altered area: " + geometry.area())