E0029
除了数字和字符之外,还使用了其他东西来表示范围。
错误代码示例:
let string = "salutations !";
// 字符串的排序关系不能在编译时计算
// 所以这并不能工作:
match string {
"hello" ..= "world" => {}
_ => {}
}
// 这是一个更通用的版本,使用了守卫
match string {
s if s >= "hello" && s <= "world" => {}
_ => {}
}
在 match 表达式中, 一个范围只能用数字和字符进行匹配。这是因为编译器在编译时检查该范围是否为空,并且不能对任何比较函数进行求值。如果希望捕获两个端点之间的有序类型的值们可以使用守卫( guard )。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。