E1018

E1018#

在这个循环表达式中没有 continue,因此 loop 在这里是无用的。

当使用一个不包含 continue 语句的 loop 表达式时,将会出现这个错误。在 MoonBit 中,一个不包含任何 continue 语句的 loop 相当于一个只执行一次的块表达式,使得在这种情况下 loop 关键字是多余的。如果你需要从头重新开始循环,你应该添加一个 continue 语句,或者使用一个更简单的控制流结构,如 matchif

错误示例#

fn countdown(n : Int) -> Int {
  let mut count = n
  loop count {
    _..<0 => break
    _ => count = count - 1
  }
  return count
}

建议#

如果你需要重新开始循环,添加一个 continue 语句:

fn countdown(n : Int) -> Int {
  let mut count = n
  loop count {
    _..<0 => break
    _ => {
      continue count - 1
    }
  }
  return count
}

或者如果不需要使用 continue,使用 if/match

fn countdown(n : Int) -> Int {
  let mut count = n
  match count {
    _..<0 => ()
    _ => count = count - 1
  }
  return count
}