E4211#
Compiler diagnostic name: control_in_list_comprehension.
列表推导式内部不允许使用控制流。
列表推导式会根据其子句产生的元素构造一个新的集合。break、continue、return、raise 以及 async 控制等控制操作,在推导式主体内部没有可接收它们的外层循环或函数边界。
错误示例#
fn values() -> Array[Int] {
[for _ in 0..<3 => break]
}
break 出现在列表推导式主体内部,因此 MoonBit 会报告错误。
建议#
将控制流移到推导式外部,或将代码改写为显式循环。
fn values() -> Array[Int] {
[for value in 0..<3 => value]
}