mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-01-30 06:00:13 +08:00
Update Ch21
This commit is contained in:
parent
1677bb0f0e
commit
6519b015eb
@ -351,4 +351,21 @@ fn main() {
|
||||
|
||||
在使用需要能够比较某个类型的两个实例是否相等的 `assert_eq!` 宏时,就需要这个 `PartialEq` 特质。
|
||||
|
||||
而 `Eq` 特质则没有方法。
|
||||
而 `Eq` 特质则没有方法。他的目的是要表明,所注解的类型的每个值,其值都等于他自身。尽管并非所有实现 `PartialEq` 的类型都可以实现 `Eq`,但 `Eq` 特质却只可应用到那些同时实现了 `PartialEq` 的类型。这方面的一个示例,便是浮点数类型:浮点数的实现,就表明两个非数字(the not-a-number, `NaN`)的值,是各自不相等的。
|
||||
|
||||
要求 `Eq` 的一个示例,就是 `HashMap<K, V>` 中的那些键,如此 `HashMap<K, V>` 就可以区分出两个键是否一致。
|
||||
|
||||
|
||||
### 用于排序比较的 `PartialOrd` 与 `Ord`
|
||||
|
||||
**`PartialOrd` and `Ord` for Ordering Comparisons**
|
||||
|
||||
`PartialOrd` 特质实现为排序目的,而比较某种类型的那些实例。实现了 `PartialOrd` 的类型,便可与 `<`、`>`、`<=` 及 `>=` 符号一起使用了。咱们只能对那些同时实现了 `PartialEq` 的类型,应用这个 `PartialOrd` 特质。
|
||||
|
||||
派生 `PartialOrd`,会实现 `partial_cmp` 方法,该方法会返回一个在所给的那些值不会产生出顺序时,将为 `None` 的一个 `Option<Ordering>`。至于即使那种类型的大多数值都可被比较,但仍不会产生出顺序的值的一个示例,便是非数字(`NaN`)浮点值。在任何浮点数和非数字浮点值下调用 `partial_cmp`,都会返回 `None`。
|
||||
|
||||
在于结构体上派生时,`PartialOrd` 会通过字段出现在结构体定义中的顺序,比较每个字段中的值,比较两个实例。而当于枚举上派生时,枚举定义中较早声明的枚举变种,被当作是小于后面所列出的那些变种的。
|
||||
|
||||
在比如会产生出由范围表达式所指定范围中一个随机数的, `rand` 代码箱的 `gen_range` 方法来说,`PartialOrd` 特质便是需要的。
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user