Let
Let 表达式
Let 表达式可用于从变量中的中间计算中捕获值。
let-expression:
let
variable-listin
expression
variable-list:
可变
variable,
variable-list
variable:
variable-name=
expression
variable-name:
identifier
下面的示例显示要计算的中间结果,这些结果存储在变量 x
、y
和 z
中,以供在后续计算 x + y + z
中使用:
let x = 1 + 1,
y = 2 + 2,
z = y + 1
in
x + y + z
此表达式的结果为:
11 // (1 + 1) + (2 + 2) + (2 + 2 + 1)
在计算 let-expression 中的表达式时,存在以下情况 :
变量列表中的表达式定义了一个新的作用域,其中包含来自 variable-list 产生式的标识符,并且在计算 variable-list 产生式中的表达式时必须存在 。 variable-list 中的表达式可能相互引用 。
在计算 let-expression 中的表达式之前,必须先计算 variable-list 中的表达式 。
除非使用了 variable-list 中的表达式,否则不能对其进行计算 。
传播在计算 let-expression 中的表达式期间引发的错误 。
let 表达式可以看作是隐式记录表达式的语法糖。 下面的表达式与上面的表达式等效:
[ x = 1 + 1,
y = 2 + 2,
z = y + 1,
result = x + y + z
][result]