gpt4 book ai didi

rust - 范围文字和范围模式之间有什么区别(例如 `...` 和 `..=` 之间)?

转载 作者:行者123 更新时间:2023-12-03 18:20:33 29 4
gpt4 key购买 nike

Operators and Symbols Rust Book 的附录列出了两个都是右包含范围的运算符:


运算符(operator)
例子
解释

..=..=expr , expr..=expr包含右侧的范围字面量
...expr...expr在模式中:包含范围模式


这两个运营商有什么区别?或者,换种说法,范围文字和范围模式之间有什么区别?
'In a pattern' 表示 expr...expr必须用于匹配表达式和 expr..=expr不应该是。为什么是这样?

最佳答案

模式是可用于测试值是否为特定形状的东西。文字是创建值的一段源代码。出于可发现性的目的,一些文字和模式看起来彼此相似,以表明它们之间的关系。
Rust 1.0 允许使用 ...在一种模式中,因此今天仍然允许使用该语法以实现向后兼容性:

match 42 {
1...100 => println!("Just right"),
_ => println!("No good"),
}
然而,Rust 1.0 使用 ... 并不稳定作为字面意思。经过多次自行车修理,我们决定 ..=是包含范围更好的语法。该语法在 Rust 1.26 中被稳定为文字,并且它也被添加为模式。
新代码应该更喜欢 ..=对于图案。编译器甚至建议更新 ... 的用法在模式中:
warning: `...` range patterns are deprecated
--> src/main.rs:3:10
|
3 | 1...100 => println!("Just right"),
| ^^^ help: use `..=` for an inclusive range
|
proposed此警告将是 2021 版中的错误。
可以更新文档以表明 ..=也可以用在模式中并且是优于 ... 的首选语法.
也可以看看:
  • How do I include the end value in a range?
  • What is the ..= (dot dot equals) operator in Rust?
  • Why it is not possible to use the ... syntax in expressions?
  • 关于rust - 范围文字和范围模式之间有什么区别(例如 `...` 和 `..=` 之间)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67370919/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com