E0029

未匹配的标注

除了数字和字符之外,还使用了其他东西来表示范围。

错误代码示例:

let string = "salutations !";

// 字符串的排序关系不能在编译时计算
// 所以这并不能工作:
match string {
    "hello" ..= "world" => {}
    _ => {}
}

// 这是一个更通用的版本,使用了守卫
match string {
    s if s >= "hello" && s <= "world" => {}
    _ => {}
}

在 match 表达式中, 一个范围只能用数字和字符进行匹配。这是因为编译器在编译时检查该范围是否为空,并且不能对任何比较函数进行求值。如果希望捕获两个端点之间的有序类型的值们可以使用守卫( guard )。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~