stage1 重构测试且成功00-05
This commit is contained in:
43
stage1/test09_slices.spl
Normal file
43
stage1/test09_slices.spl
Normal file
@@ -0,0 +1,43 @@
|
||||
/* ===== 模块5:复合类型 =====
|
||||
* test09_slices — 切片
|
||||
* 难度:2/5
|
||||
* 验证点:arr[begin..end] 创建切片、arr[begin..] 到末尾、
|
||||
* 切片索引访问、slice.len、slice.ptr
|
||||
*/
|
||||
fn main() i32 {
|
||||
/* 从数组创建切片 */
|
||||
var arr: [5]i32 = [5]i32{10, 20, 30, 40, 50};
|
||||
var slice: []i32 = arr[1..4];
|
||||
|
||||
/* 切片长度 */
|
||||
if slice.len != 3 { ret 1; }
|
||||
|
||||
/* 切片元素访问 */
|
||||
if slice[0] != 20 { ret 2; }
|
||||
if slice[1] != 30 { ret 3; }
|
||||
if slice[2] != 40 { ret 4; }
|
||||
|
||||
/* 省略结束值:arr[begin..] */
|
||||
var full: []i32 = arr[0..];
|
||||
if full.len != 5 { ret 5; }
|
||||
if full[0] != 10 { ret 6; }
|
||||
if full[4] != 50 { ret 7; }
|
||||
|
||||
/* 从开头到中间 */
|
||||
var head: []i32 = arr[0..3];
|
||||
if head.len != 3 { ret 8; }
|
||||
if head[0] != 10 { ret 9; }
|
||||
|
||||
/* 切片遍历(配合 for)*/
|
||||
var nums: [3]i32 = [3]i32{100, 200, 300};
|
||||
var sl: []i32 = nums[0..];
|
||||
var total: i32 = 0;
|
||||
var i: i32 = 0;
|
||||
while i < sl.len {
|
||||
total = total + sl[i];
|
||||
i = i + 1;
|
||||
}
|
||||
if total != 600 { ret 10; }
|
||||
|
||||
ret 0;
|
||||
}
|
||||
Reference in New Issue
Block a user