数据结构格式化规则
§8 字面量
§8.1 整数字面量。 整数字面量直接输出。
// ✅ 正确
let x = 42;§8.2 浮点字面量。 浮点字面量必须包含小数点。
// ✅ 正确
let x = 3.14;
let y = 42.0; // 必须有小数点
// ❌ 错误
let y = 42; // 整数,不是浮点数§8.3 字符串字面量。 默认使用双引号。当 single_quote = true 时,使用单引号。
// 默认(双引号)
let s = "hello";
// single_quote = true
let s = 'hello';§8.4 布尔字面量。 布尔字面量使用小写。
// ✅ 正确
let x = true;
let y = false;
// ❌ 错误
let x = True;
let y = FALSE;§10 列表和字典
§10.1 列表格式。 列表使用 [] 包围,元素之间用逗号分隔。
// ✅ 正确
let x = [1, 2, 3];
// ❌ 错误
let x = [1,2,3];§10.2 字典格式。 字典使用 {} 包围,键值对使用 key: value 格式。
// ✅ 正确
let x = {"a": 1, "b": 2};
// ❌ 错误
let x = {"a":1, "b":2};§10.3 列表推导式。 列表推导式使用 [expr for var in iterable] 格式。
// ✅ 正确
let x = [i * 2 for i in range(10)];
// 带条件
let x = [i for i in range(10) if i > 5];§11 Match 表达式
§11.1 Match 格式。 match 关键字与表达式之间用空格分隔。
// ✅ 正确
match x { ... }
// ❌ 错误
match(x) { ... }§11.2 Pattern 对齐。 多个 pattern 应该对齐,使用空格填充。
// ✅ 对齐
match x {
1 => "one",
2 => "two",
100 => "hundred",
_ => "other",
}§11.3 Pattern 过长换行。 当 pattern 过长时,pattern 换行,=> 与 body 对齐。
// ✅ 换行
match x {
VeryLongPatternName { field1, field2 }
=> handle_case(field1, field2),
_ => default_case(),
}§11.4 元组
§11.4.1 元组格式。 元组使用 () 包围,元素之间用逗号分隔。
// ✅ 正确
let t = (1, "hello", true);
let t = (1,); // 单元素元组
// ❌ 错误
let t = (1, "hello", true); // 逗号后缺少空格
let t = (1,"hello",true); // 逗号后缺少空格§11.4.2 空元组。 空元组使用 () 表示。
// ✅ 正确
let t = ();§11.5 索引访问
§11.5.1 索引格式。 索引使用 expr[index] 格式。
// ✅ 正确
let x = arr[0];
let y = matrix[i][j];
// ❌ 错误
let x = arr [0]; // 多余空格
let y = matrix[ i ][ j ]; // 多余空格§11.6 字段访问
§11.6.1 字段访问格式。 字段访问使用 expr.field 格式。
// ✅ 正确
let x = obj.field;
let y = obj.method();
// ❌ 错误
let x = obj . field; // 多余空格
let y = obj. field; // 多余空格§11.6.2 链式字段访问。 链式字段访问超过行宽时,每行一个方法调用。
// 超过行宽时
let result = object.method1().method2().method3().method4();
// 格式化后
let result = object
.method1()
.method2()
.method3()
.method4();