/

Lambda

Lambda 是一段代码块,它将数量可变的参数映射为任意类型的单一输出值(请参阅本维基的值类型章节)。

语法如下:

param1 param2 param3:
My code

param1 param2 param3: 部分是 lambda 的头部,用于定义参数名称。你可以像处理变量 一样访问它们的值:

param1 param2 param3:
The second parameter is .param2

在以下情况下你可以省略头部:

The second parameter is .2

Lambda 是能够分叉并创建新作用域的结构。

行内 lambda

无论 lambda 出现在块级参数还是行内参数(用花括号包裹)中,其定义方式都相同。

.myfunction {x y: The values are .x and .y}

隐式参数同样有效:

.myfunction {The values are .1 and .2}

示例

.foreach

.foreach {2..5}
    n:
    The number is **.n**

使用隐式参数:

.foreach {2..5}
    The number is **.1**

.function

.function 的主体是一个接受数量可变的显式参数的 lambda:

.function {area}
    width height:
    .multiply {.width} by:{.height}

.takeif

.num::takeif {x: .x::equals {5}}