Skip to content

流程控制 ​

条件必须写在圆括号里,代码块必须带花括号。

ruguo(如果 / if) ​

cpro
ruguo (a > 10) {
    a = 18
} fouze ruguo (a < 5) {
    a = 20
} fouze {
    a = 100
}
cpro
如果 (a > 10) {
    a = 18
} 否则 如果 (a < 5) {
    a = 20
} 否则 {
    a = 100
}
cpro
if (a > 10) {
    a = 18
} else if (a < 5) {
    a = 20
} else {
    a = 100
}

不写类型的比较默认按 z64(i64)比较,其他类型要写明,例如 ==[zifuchuan](==[string])、<[f64]。

dang(当 / while) ​

cpro
bl i = 0
dang (i < 10) {
    i = i +[z64] 1
}
cpro
变量 i = 0
当 (i < 10) {
    i = i +[i64] 1
}
cpro
var i = 0
while (i < 10) {
    i = i +[i64] 1
}

jishu(计数 / for) ​

C 风格的条件循环:

cpro
jishu (bl i = 0; i < 10; i = i +[z64] 1) {
    ruguo (i == 5) {
        jixu
    }
    dayin(i)
}

jishu (;;) {        // 无限循环
    tiaochu
}
cpro
计数 (变量 i = 0; i < 10; i = i +[i64] 1) {
    如果 (i == 5) {
        继续
    }
    打印(i)
}

计数 (;;) {         // 无限循环
    跳出
}
cpro
for (var i = 0; i < 10; i = i +[i64] 1) {
    if (i == 5) {
        continue
    }
    print(i)
}

for (;;) {          // 无限循环
    break
}

用 shuyu(属于 / in)遍历数组:

cpro
bl arr leixing [z32; 3] = [10, 20, 30]

jishu (x shuyu arr) {
    dayin(x)
}

jishu (i, x shuyu arr) {  // 带下标
    dayin(i, x)
}
cpro
变量 arr 类型 [i32; 3] = [10, 20, 30]

计数 (x 属于 arr) {
    打印(x)
}

计数 (i, x 属于 arr) {  // 带下标
    打印(i, x)
}
cpro
var arr type [i32; 3] = [10, 20, 30]

for (x in arr) {
    print(x)
}

for (i, x in arr) {     // 带下标
    print(i, x)
}
  • 循环变量不写 bl,类型自动推断
  • 被遍历的对象必须是变量,临时值要先存进变量
  • 遍历得到的元素是拷贝

tiaochu(跳出 / break)和 jixu(继续 / continue)只能写在循环体里,不支持带标签跳出。

cpro 目前处于测试阶段