6. 循环:while、for、break 与 continue

  • 第六章,共二十章
  • 阅读约 1 分钟

递归和 map/fold 之外,Dawn 也有普通循环:while 条件循环、for x in 列表、 for i in a..b(含 a 不含 b)。break 提前退出最内层循环,continue 跳到下一轮; 它们是 Never 类型的表达式,不能穿过 lambda 边界。

pub fn main() -> Unit !io = {
  var sum = 0
  for i in 0..5 {
    if i == 3 { continue }
    sum = sum + i
  }
  println("${sum}")

  var n = 0
  while true {
    n = n + 1
    if n * n > 30 { break }
  }
  println("${n}")
}
7
6

另见:spec.md §4.7