E3018#
范围模式的边界必须是常数字面量、常量或通配符。
错误示例#
fn main {
let a = 3
match 0 {
0..<a => println("Between 0 and 3") // Error: Bounds of range pattern must be constant, named constant or wildcard.
_ => println("Not between 0 and 3")
}
}
建议#
你可以将变量 a
改为一个常量:
const A = 3
fn main {
match 0 {
0..<A => println("Between 0 and 3")
_ => println("Not between 0 and 3")
}
}
或者,你可以直接使用常数字面量:
fn main {
match 0 {
0..<3 => println("Between 0 and 3")
_ => println("Not between 0 and 3")
}
}
或者,你可以使用一个通配符:
fn main {
let a = 3
match 0 {
0..<_ => println("Big than or equal to 0")
_ => println("Less than 0")
}
}
注意:使用通配符会改变这个范围模式的含义。