Rush
Rush 语言
对 RushScript 的简短而诚实的导览,依据 Rush 自己的文档写成。
Rush 是什么
Rush 是融合在一个可执行文件里的两样东西:进程运行时,以及运行在其上的语言 RushScript。RushScript 是解释型语言:作者无需单独的编译步骤。
是值,不是变量
Rush 没有变量。绑定把一个标签(不加引号的名字)与一个值联系起来:port = 8080 把标签 port 绑定到数字 8080。
port = 8080到处都是方括号
[ 和 ] 是唯一的分组括号,用于调用参数、列表与映射字面量以及表达式分组。参数用逗号分隔:add[10, 20]。圆括号在文本之外会被拒绝。
add[10, 20]每一行都要做点事
一行代码要么绑定,要么调用,要么分流。只写出一个值的行,比如 5 或 x,什么也不做,因此会以错误 RX0065 被拒绝。
x = 5
write[x]输出文本
write['hello world'] 输出到标准输出。write.log 和 write.debug 是另外两种输出:前者是系统对用户说话,后者面向开发者,仅在 DEBUG=1 时显示。
write['hello world']绑定与配对
= 把名字绑定到值;: 把键与它的值配成一对。这是两件事,所以有两种写法:cfg = [port: 8080]。
cfg = [port: 8080]会自我约束的形状
把形状声明为一组规则的映射,再用 : 附加上去。违反规则的值会在入口处被拒绝,而不是以后才发现。
Banana = [grams: number.real.ge[120].le[180], length_cm: number.real.ge[12].le[25], id: text.uuid]
good = [grams: 150, length_cm: 18, id: '…']: Banana
bad = [grams: 999, length_cm: 18, id: '…']: Banana校验器,无需导入
这些是语言内置功能,不是库:email、ipv4、ipv6、uuid、url、iso8601、rfc3339、cpf、cnpj、cep、phone、hex 和 base64。
诚实的现状
Rush 自己的文档说得很直白:年轻、快、尚未就绪,而且是有意为之。请把本页当作导览,以引擎自己的文档为准。
来源
本页依据 Rush 文档树中的下列文件写成,只采用其中给出的示例和规则。这些文件是用英文写的。
/f/dev/rush/README.md (What Rush is: Runtime + Language; Why use rush instead of Python)/f/dev/rush/doc/FLOPS/09_language.md (Values, not variables; Brackets everywhere; A line holds an expression; A key-value pair is key: value; The output verb; The Banana)
