语法

  • with ( id := expression id := expression … )

参数

  1. id – 标识符
    局部变量名称。
  2. 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())