E4211

E4211#

Compiler diagnostic name: control_in_list_comprehension.

列表推导式内部不允许使用控制流。

列表推导式会根据其子句产生的元素构造一个新的集合。breakcontinuereturnraise 以及 async 控制等控制操作,在推导式主体内部没有可接收它们的外层循环或函数边界。

错误示例#

fn values() -> Array[Int] {
  [for _ in 0..<3 => break]
}

break 出现在列表推导式主体内部,因此 MoonBit 会报告错误。

建议#

将控制流移到推导式外部,或将代码改写为显式循环。

fn values() -> Array[Int] {
  [for value in 0..<3 => value]
}