E4221#
编译器诊断名称:control_in_with_pattern_default。
or-pattern 的 with 子句中的默认表达式试图通过 return、break、continue 或 raise 转移控制流。默认表达式必须在局部产生值,不能离开所在的模式。
错误示例#
///|
pub fn value_or_zero(value : Int?) -> Int {
match value {
Some(x) | (None with x = { return 0 }) => x
}
}
修改建议#
默认值应使用普通表达式;需要的控制流应在模式匹配完成后执行。
///|
pub fn value_or_zero(value : Int?) -> Int {
match value {
Some(x) | (None with x = 0) => x
}
}