循环语句

在不少实际问题中有许多具有规律性的重复操作, 因此在程序中就需要重复执行某些语句. Z1h 语言提供了以下几种类型循环处理语句 示例|循环类型|描述| |:-:|:-:|:-:| for {…}|无限循环|无限执行代码块内的逻辑,使用流程控制语句打破循环为止 for (xxx) {…}|单个条件循环|当xxx(变量或表达式)为真时循环 for (var i = 0; i < 10; i++) {…}|经典循环体|for(单次表达式;条件表达式;末尾循环体),条件表达式为假时跳出 for (k, v in map) {…}|遍历map键值对|遍历map的内容, k为键, v为值 for (ind, ele in arr) {…}|遍历数组|遍历arr的内容, ind为索引, ele为元素 此外还有forEach/map/filter/filterMap/asyncMap等数组自带的方法可以对数组进行遍历 请注意, Z1h语言的循环语句代码块不能为空

无限循环

z1h a = 0 for { a++ print('Output:', a) if (a == 10) break }

单个条件循环

z1h b = 15 for b { b-- print('Output:', b) }

经典循环

z1h for (var i = 0; i < 5; i++) { print(`${i} 的3次方为 ${i**3}`) }

遍历map

z1h people = { name: 'zwr', age: 22, } for (k, v in people) { print(`属性${k}, 值${v}`) }

遍历结构体

z1h req = new(net_http.Request, {method: 'POST'}) for (k, v in req) { print(`属性${k}, 值${v}`) }

遍历并发安全map

z1h m = new(sync.Map) m.zh = '中文' m.en = '英文' for (k, v in m) { print(`简写=${k}, 含义=${v}`) }

遍历数组

z1h arr = [8, 9, 10] for (ind, ele in arr) { print(`第${ind+1}个元素为: ${ele}`) }

break

可以打断for等循环, 例如 z1h for (i = 0; i < 10; i++) { print(i) if (i == 4) break }

break多层

例如你有for嵌套循环, 并且需要打断外层for循环时, 可以使用break 层数的方式进行打断 z1h for (x = 0; x < 10; x++) { for (y = 0; y < 10; y++) { print(`X = ${x}, Y = ${y}`) if (y == 4) break 2 // 可以去掉"2"试试看有什么区别 } }

continue

可以打断for的本次循环, 直接进入下次循环, 例如 z1h for (i = 0; i < 3; i++) { print(i, 'Hello') if (i == 1) continue print(i, 'Hi') // 唯独跳过了1 Hi, 并且不打断后续的2输出 }

continue多层

例如你有for嵌套循环, 并且需要continue外层for循环时, 可以使用continue 层数 z1h for (x = 0; x < 3; x++) { for (y = 0; y < 3; y++) { print(`One: X = ${x}, Y = ${y}`) if (y == 1) continue 2 // 可以去掉"2"试试看有什么区别 print(`Two: X = ${x}, Y = ${y}`) } }