以下列表包含 X 语言中保留的关键字,因此它们不能用作标识符(如变量名、函数名等),除非在原始标识符形式中。
本附录基于 X 语言的官方设定文件(x-keywords.md 和 README.md)。
X 语言的关键字设计遵循以下原则:
- 使用完整英文单词(
function、not、and、or),避免缩写
- 优先选用“行业共识“的单词(如
if / else、class、async / await)
- 尽量避免符号化操作符,用自然语言单词提高可读性
- 关键字语义“顾名思义“,不需要记忆额外规则
以下关键字具有当前描述的功能。
| 关键字 | 说明 |
let | 声明不可变变量绑定(默认不可变) |
mutable | 声明可变绑定(与 let 配合使用,如 let mutable) |
const | 声明编译期常量(值在编译期确定) |
| 关键字 | 说明 |
type | 声明类型别名、记录类型或代数数据类型(ADT) |
trait | 声明 trait(接口),定义可被类型实现的一组行为 |
| 关键字 | 说明 |
function | 声明函数(使用完整单词,不使用缩写 fn 或 func) |
return | 从函数提前返回值 |
| 关键字 | 说明 |
if | 基于条件表达式的分支 |
else | if 控制流结构的回退分支 |
when | 条件表达式(类似三元运算符,但更可读) |
then | when 表达式的一部分 |
match | 模式匹配(穷尽匹配多个分支) |
where | 模式匹配的守卫条件,或声明式查询的过滤条件 |
while | 基于条件的循环 |
for | 遍历迭代器的循环 |
in | for 循环语法的一部分,用于指定范围 |
break | 退出循环 |
continue | 跳到循环的下一次迭代 |
| 关键字 | 说明 |
not | 逻辑非(替代符号 !) |
and | 逻辑与(替代符号 &&) |
or | 逻辑或(替代符号 ` |
true | 布尔字面量 true |
false | 布尔字面量 false |
| 关键字 | 说明 |
is | 类型检查(判断值是否属于某个类型) |
as | 类型转换(将值转换为另一个类型) |
| 关键字 | 说明 |
class | 声明类 |
extends | 类继承 |
new | 创建新实例(构造函数) |
virtual | 虚方法声明(可被子类重写) |
override | 重写继承的方法 |
abstract | 抽象类或方法 |
extension | 扩展方法或属性(为现有类型添加功能) |
| 关键字 | 说明 |
module | 声明模块 |
import | 从模块导入符号 |
export | 从模块导出符号 |
| 关键字 | 说明 |
Some | Option 枚举的变体,表示存在值 |
None | Option 枚举的变体,表示不存在值 |
Ok | Result 枚举的变体,表示成功 |
Err | Result 枚举的变体,表示错误 |
| 关键字 | 说明 |
async | 异步函数或块 |
await | 等待异步操作完成 |
together | 并发执行多个操作(等待所有完成) |
race | 竞态执行(取第一个完成的结果) |
go | 启动轻量级协程 |
actor | Actor 模型声明 |
| 关键字 | 说明 |
_ | 通配符模式(忽略值或占位符) |
this | 方法接收器(当前实例) |
super | 父类或父模块 |
X 语言的关键字和类型设计遵循以下原则(来自 x-keywords.md):
- 控制流关键字高度收敛:几乎所有语言都使用
if / else、for / while,X 直接沿用这些“行业标准“。
- 命名更偏自然语言:与大量使用缩写的语言(
def、fn、sub)相比,X 选择 function、not / and / or、match / where 等完整单词,使代码接近英文散文。
- 异步与模块关键字与现代生态对齐:
async / await、import / export、module 与 C#、JavaScript、TypeScript 等现代语言保持一致,方便开发者迁移。
- 并发与 OOP 使用领域通用术语:
actor、trait、extension 等直接采用在多门语言中已经广泛使用的专业术语,避免发明新的名词。
设计准则:代码应该像散文一样可读。关键字是语言的词汇表——每个词都必须是真正的英语单词,且含义精确。
原始标识符是一种语法,它允许你使用通常是关键字的词作为标识符。这对于与旧版代码的互操作性很有用,该代码是在某些词成为关键字之前编写的,或者与使用不是 X 语言关键字但另一种语言中的关键字的库进行交互。
原始标识符的语法使用反引号 ` 来转义关键字:
// `let` 是原始标识符,表示变量名 "let"
let `let` = 5
虽然不是关键字,但以下符号在 X 语言中非常重要:
| 符号 | 说明 |
-> | 函数返回类型或 Lambda 表达式 |
=> | 模式匹配分支 |
| ` | >` |
.. | 左闭右开范围(不包含末尾) |
..= | 包含范围(包含末尾) |
?. | 可选链访问 |
?? | 默认值运算符 |