E3018#
范围模式的边界必须是常数字面量、常量或通配符。
错误示例#
///|
fn describe(value : Int, limit : Int) -> String {
match value {
0..<limit => "between"
_ => "outside"
}
}
///|
test {
inspect(describe(0, 3), content="between")
}
建议#
你可以将变量 a 改为一个常量:
///|
const A = 3
///|
fn describe(value : Int) -> String {
match value {
0..<A => "between"
_ => "outside"
}
}
///|
test {
inspect(describe(0), content="between")
}
或者,你可以直接使用常数字面量:
///|
fn describe_literal(value : Int) -> String {
match value {
0..<3 => "between"
_ => "outside"
}
}
///|
test {
inspect(describe_literal(0), content="between")
}
或者,你可以使用一个通配符:
///|
fn describe_wildcard(value : Int) -> String {
match value {
0..<_ => "non-negative"
_ => "negative"
}
}
///|
test {
inspect(describe_wildcard(0), content="non-negative")
}
注意:使用通配符会改变这个范围模式的含义。