循环语句
在不少实际问题中有许多具有规律性的重复操作, 因此在程序中就需要重复执行某些语句.
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语言的循环语句代码块不能为空
无限循环
a = 0
for {
a++
print('Output:', a)
if (a == 10)
break
}
单个条件循环
b = 15
for b {
b--
print('Output:', b)
}
经典循环
for (var i = 0; i < 5; i++) {
print(`${i} 的3次方为 ${i**3}`)
}
遍历map
people = {
name: 'zwr',
age: 22,
}
for (k, v in people) {
print(`属性${k}, 值${v}`)
}
遍历结构体
req = new(net_http.Request, {method: 'POST'})
for (k, v in req) {
print(`属性${k}, 值${v}`)
}
遍历并发安全map
m = new(sync.Map)
m.zh = '中文'
m.en = '英文'
for (k, v in m) {
print(`简写=${k}, 含义=${v}`)
}
遍历数组
arr = [8, 9, 10]
for (ind, ele in arr) {
print(`第${ind+1}个元素为: ${ele}`)
}
break
可以打断for
等循环, 例如
for (i = 0; i < 10; i++) {
print(i)
if (i == 4)
break
}
break多层
例如你有for
嵌套循环, 并且需要打断外层for
循环时, 可以使用break 层数
的方式进行打断
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
的本次循环, 直接进入下次循环, 例如
for (i = 0; i < 3; i++) {
print(i, 'Hello')
if (i == 1)
continue
print(i, 'Hi') // 唯独跳过了1 Hi, 并且不打断后续的2输出
}
continue多层
例如你有for
嵌套循环, 并且需要continue
外层for
循环时, 可以使用continue 层数
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}`)
}
}