Skip to content
📖 Auto 编程语言(主书)本书目录

附录 A:关键字参考 ​

本附录按类别列出 Auto 语言的所有关键字、运算符和内置构造。每个条目包含一行描述、首次引入的章节号以及最小用法示例。


1. 声明 ​

关键字说明章节示例
fn定义函数或方法第 3 章fn add(a int, b int) int { a + b }
let声明不可变绑定第 2 章let x = 10
var声明可变绑定第 2 章var count = 0
const声明编译期常量第 2 章const MAX_SIZE = 1024
type定义自定义数据类型(结构体)第 6 章type Point { x f64, y f64 }
enum定义标签联合体或 C 风格枚举第 7 章enum Color { RED = 1, GREEN = 2 }
task定义 actor 任务第 15 章task Counter { var count int = 0 }
mod声明模块第 10 章mod network { ... }
use导入模块或包第 10 章use io
use.rust导入 Rust 标准库类型第 10 章use.rust std::collections::HashMap
import从模块中导入特定项第 10 章import fmt::println
pub将项标记为公开可见第 10 章pub fn greet() { ... }
static将方法标记为静态(类型级)方法第 6 章static fn new() Counter { ... }

2. 控制流 ​

关键字说明章节示例
if条件分支第 3 章if x > 0 { print("positive") }
elseif 的备选分支第 3 章if ok { ... } else { ... }
is模式匹配(替代 match)第 7 章is x { 0 => print("zero"), else => ... }
else(在 is 中)模式匹配中的兜底分支第 7 章is val { _ => ... }
for迭代循环或条件循环(替代 while)第 3 章for i < 10 { i = i + 1 }
for ... in遍历集合第 3 章for item in list { print(item) }
for ... in ..范围迭代第 3 章for i in 0..10 { print(i) }
loop无限循环第 3 章loop { ... }
break提前退出循环第 3 章if done { break }
continue跳过当前循环迭代第 3 章if skip { continue }
return从函数返回值第 3 章return x + 1
yield从迭代器或生成器产生值第 19 章yield item

3. 面向对象编程 ​

关键字说明章节示例
is(在类型定义中)单继承第 8 章type Hawk is Bird { speed f64 }
has组合与自动委托第 8 章type Car has Engine { brand str }
spec定义行为契约(trait)第 8 章spec Drawable { fn draw() }
as为类型实现 spec第 8 章ext Circle as Drawable { ... }
ext为类型定义方法(后置扩展)第 6 章ext Point { fn distance() f64 { ... } }
mut fn声明修改接收者的方法第 8 章mut fn increment() void { .count = .count + 1 }
super访问父类型的字段或方法第 8 章super.fly()

4. 错误处理 ​

关键字说明章节示例
?T可选(可空)类型第 9 章fn find(id int) ?User { ... }
!T错误传播结果类型第 9 章fn read(path str) !str { ... }
?(运算符)传播错误或解包值第 9 章let data = fs.read("f.txt")?
!(在函数上)将函数标记为可传播错误第 9 章fn main() ! { ... }
try开始 try 块进行异常式错误处理第 9 章try { risky_operation() }
catch捕获 try 块中的错误第 9 章catch e { print(e) }
throw显式抛出错误第 9 章throw "something went wrong"
Some构造包含数据的可选值第 9 章Some(42)
None表示缺失的可选值第 9 章None
Ok构造成功结果第 9 章Ok(value)
Err构造错误结果第 9 章Err("not found")

5. 并发 ​

关键字说明章节示例
spawn启动新的 actor 任务第 15 章let handle = spawn Counter()
send向 actor 发送消息第 15 章handle.send(Increment)
receive在 actor 中接收消息第 15 章let msg = receive
on对传入消息进行模式匹配(actor 邮箱)第 7、15 章on Increment => .count = .count + 1
select等待多个异步操作第 16 章select { msg => ..., timeout => ... }
task定义 actor 蓝图第 15 章task PingPong { ... }
~T蓝图类型(延迟/期约)第 16 章fn fetch(url str) ~str { ... }
.await等待异步蓝图解析完成第 16 章let data = fetch(url).await

6. 内存与所有权 ​

关键字说明章节示例
view T以只读方式借用值第 11 章fn print_name(v view User) { ... }
mut T以可变方式借用值第 11 章fn reset(m mut Counter) { m.count = 0 }
*T原始指针类型(不安全,需 sys 上下文)第 11 章let ptr *int = sys addr_of(x)
move显式转移所有权第 12 章consume(move data)
clone创建值的深拷贝第 12 章let copy = data.clone()
free手动释放值第 12 章free(buf)
sys进入不安全上下文(底层访问)第 11 章sys { let p = *addr }

7. 泛型 ​

关键字说明章节示例
<T>泛型类型参数第 13 章fn identity(x T) T { x }
<T, U>多个泛型参数第 13 章type Pair<T, U> { first T, second U }
where泛型约束子句第 13 章fn compare<T>(a T, b T) int where T: Ord { ... }
impl在 where 子句中满足 spec 约束第 13 章where T: impl Drawable
List<T>泛型动态数组第 4、13 章let list List<int> = List.new()
Map<K, V>泛型哈希映射第 4、13 章let m Map<str, int> = {}
Result<T, E>泛型结果类型第 9、13 章fn divide(a int, b int) Result<int, str> { ... }

8. 属性与元编程 ​

属性说明章节示例
#[test]将函数标记为测试函数第 18 章#[test] fn test_add() { ... }
#[comptime]在编译期求值函数或代码块第 20 章#[comptime] fn name() str { "hello" }
#[cfg(...)]根据目标平台或特性进行条件编译第 20 章#[cfg(target_os = "linux")] fn linux_only() { ... }
#[macro]定义编译期宏第 20 章#[macro] fn assert_eq(a, b) { ... }
#[inline]提示编译器内联函数第 20 章#[inline] fn small_fn() int { 42 }
#[derive(...)]自动生成常见 trait 实现第 20 章#[derive(Debug, Clone)] type Point { x f64, y f64 }

9. 字面量与内置类型 ​

关键字 / 字面量说明章节示例
true布尔值真第 2 章let active = true
false布尔值假第 2 章let done = false
nil空值 / 缺失值第 9 章let x ?int = nil
str字符串类型第 2 章let name str = "Auto"
int默认整数类型(32 位)第 2 章let x int = 42
f6464 位浮点数类型第 2 章let pi f64 = 3.14
bool布尔类型第 2 章let flag bool = true
charUnicode 字符类型第 7 章let c char = 'A'
void单元类型(无有意义返回值)第 3 章fn greet() void { print("hi") }
List<T>动态数组类型第 4 章var items = List.new()
Map<K, V>哈希映射类型第 4 章var m Map<str, int> = {}
Set<T>哈希集合类型第 4 章var s Set<int> = Set.new()

10. 其他 ​

关键字说明章节示例
self访问当前实例(通过 . 前缀,非参数)第 6 章.name(等同其他语言中的 self.name)
super在继承中引用父类型第 8 章super.fly()
print向标准输出打印值第 1 章print("Hello, Auto!")
automanAuto 的包管理器和构建工具第 1 章$ automan new my_project
.(字段访问)访问字段或调用方法第 6 章point.x / list.len()
..(范围)创建半开范围第 3 章for i in 0..10 { ... }
$var字符串插值(变量)第 2 章print("Hello, $name")
${expr}字符串插值(表达式)第 2 章print("result: ${a + b}")
_通配符模式(忽略值)第 7 章is x { _ => print("anything") }

快速交叉索引:关键字与章节对照 ​

章节标题引入的关键字
1入门指南fn、print、automan
2变量与运算符let、var、const、true、false、str、int、f64、bool、$var
3函数与控制流if、else、for、loop、break、continue、return、void、..
4集合与节点List<T>、Map<K, V>、Set<T>
6类型与 lettype、ext、static、self(隐式)、元组
7枚举与模式匹配enum、is、on、char、_
8面向对象重塑is(继承)、has、spec、as、mut fn、super
9错误处理?T、!T、?、try、catch、throw、Some、None、Ok、Err
10包与模块mod、use、use.rust、import、pub
11引用与指针view、mut、*T、sys、生命周期
12内存与所有权move、clone、free、所有权规则
13泛型<T>、where、impl(约束)、泛型类型
15Actor 并发spawn、send、receive、on、task、select
16异步 ~T~T、.await、异步函数
17智能类型转换与流式类型if x is T、联合类型、流敏感类型收窄
18测试#[test]、assert_eq、assert
19闭包与迭代器yield、闭包、.iter()、.map()、.filter()、.fold()
20编译期与元编程#[comptime]、#[cfg(...)]、#[macro]、#[inline]、#[derive(...)]

基于 MIT 许可发布。