声明:给输入注解、给中间值起名
出现声明的消息就是 complex message,正文必须用 {{…}} 包起来。声明写在正文 / .match 之前,有两种:.input 给外部传入的变量贴上注解(函数 + 选项),.local
把一个表达式算出来、起个名字复用。它们让「这个变量该怎么格式化 / 怎么参与选择」只声明一次,正文里反复引用即可。
1 · .input:一次注解,处处复用
.input {$count :number minimumFractionDigits=2} 声明:外部会传 $count,且它默认用 :number(带 2 位小数)处理。此后正文里的 {$count} 自动带上这套格式,无需每处重写;若该变量还要参与 .match,这个注解同时充当它的选择子。
注意上面正文里写了两次 {$count},但只在 .input 注解了一次小数位——两处都生效。把它想成「给变量绑定默认格式」。
2 · .local:命名一个中间结果
.local $name = {表达式} 计算并命名一个值,正文或后续声明里用 {$name} 引用。适合「同一个加工后的值要用多次」或「把复杂表达式拆开读」。local 之间可以链式引用:
3 · 使用处可临时覆盖
被注解的变量在使用处再加函数 / 选项,会在该处覆盖默认注解(不影响别处)。下例 $n 默认 2 位小数,但第二处临时改成 0 位:
4 · 动手试:自由编写声明
随意写 .input / .local + 正文,改传入值看结果。试试漏掉 {{}} 会怎样:
声明的约束:每个名字只能声明一次;.local 不能引用尚未声明的下文变量;所有声明必须在正文 / .match 之前。违反会得到 duplicate-declaration 等 数据模型错误。