Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

附录 A - 关键字

以下列表包含 X 语言中保留的关键字,因此它们不能用作标识符(如变量名、函数名等),除非在原始标识符形式中。

本附录基于 X 语言的官方设定文件(x-keywords.md 和 README.md)。

关键字速览

X 语言的关键字设计遵循以下原则:

  • 使用完整英文单词functionnotandor),避免缩写
  • 优先选用“行业共识“的单词(如 if / elseclassasync / await
  • 尽量避免符号化操作符,用自然语言单词提高可读性
  • 关键字语义“顾名思义“,不需要记忆额外规则

当前使用的关键字

以下关键字具有当前描述的功能。

1. 变量与绑定关键字

关键字说明
let声明不可变变量绑定(默认不可变)
mutable声明可变绑定(与 let 配合使用,如 let mutable
const声明编译期常量(值在编译期确定)

2. 类型与抽象关键字

关键字说明
type声明类型别名、记录类型或代数数据类型(ADT)
trait声明 trait(接口),定义可被类型实现的一组行为

3. 函数关键字

关键字说明
function声明函数(使用完整单词,不使用缩写 fnfunc
return从函数提前返回值

4. 控制流关键字

关键字说明
if基于条件表达式的分支
elseif 控制流结构的回退分支
when条件表达式(类似三元运算符,但更可读)
thenwhen 表达式的一部分
match模式匹配(穷尽匹配多个分支)
where模式匹配的守卫条件,或声明式查询的过滤条件
while基于条件的循环
for遍历迭代器的循环
infor 循环语法的一部分,用于指定范围
break退出循环
continue跳到循环的下一次迭代

5. 布尔逻辑关键字

关键字说明
not逻辑非(替代符号 !
and逻辑与(替代符号 &&
or逻辑或(替代符号 `
true布尔字面量 true
false布尔字面量 false

6. 类型检查与转换关键字

关键字说明
is类型检查(判断值是否属于某个类型)
as类型转换(将值转换为另一个类型)

7. 类与对象关键字

关键字说明
class声明类
extends类继承
new创建新实例(构造函数)
virtual虚方法声明(可被子类重写)
override重写继承的方法
abstract抽象类或方法
extension扩展方法或属性(为现有类型添加功能)

8. 模块系统关键字

关键字说明
module声明模块
import从模块导入符号
export从模块导出符号

9. 选项和结果类型构造器

关键字说明
SomeOption 枚举的变体,表示存在值
NoneOption 枚举的变体,表示不存在值
OkResult 枚举的变体,表示成功
ErrResult 枚举的变体,表示错误

10. 异步与并发关键字

关键字说明
async异步函数或块
await等待异步操作完成
together并发执行多个操作(等待所有完成)
race竞态执行(取第一个完成的结果)
go启动轻量级协程
actorActor 模型声明

11. 其他关键字

关键字说明
_通配符模式(忽略值或占位符)
this方法接收器(当前实例)
super父类或父模块

关键字和类型设计原则

X 语言的关键字和类型设计遵循以下原则(来自 x-keywords.md):

  1. 控制流关键字高度收敛:几乎所有语言都使用 if / elsefor / while,X 直接沿用这些“行业标准“。
  2. 命名更偏自然语言:与大量使用缩写的语言(deffnsub)相比,X 选择 functionnot / and / ormatch / where 等完整单词,使代码接近英文散文。
  3. 异步与模块关键字与现代生态对齐async / awaitimport / exportmodule 与 C#、JavaScript、TypeScript 等现代语言保持一致,方便开发者迁移。
  4. 并发与 OOP 使用领域通用术语actortraitextension 等直接采用在多门语言中已经广泛使用的专业术语,避免发明新的名词。

设计准则:代码应该像散文一样可读。关键字是语言的词汇表——每个词都必须是真正的英语单词,且含义精确。

原始标识符

原始标识符是一种语法,它允许你使用通常是关键字的词作为标识符。这对于与旧版代码的互操作性很有用,该代码是在某些词成为关键字之前编写的,或者与使用不是 X 语言关键字但另一种语言中的关键字的库进行交互。

原始标识符的语法使用反引号 ` 来转义关键字:

// `let` 是原始标识符,表示变量名 "let"
let `let` = 5

重要符号(非关键字)

虽然不是关键字,但以下符号在 X 语言中非常重要:

符号说明
->函数返回类型或 Lambda 表达式
=>模式匹配分支
`>`
..左闭右开范围(不包含末尾)
..=包含范围(包含末尾)
?.可选链访问
??默认值运算符