mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-02-06 01:20:29 +08:00
Update Ch10
This commit is contained in:
parent
a3657db93a
commit
d6472c86ec
@ -267,9 +267,9 @@ fn main() {
|
||||
|
||||
*清单 10-6:保存类型 `T` 的 `x` 与 `y` 值的 `Point<T>` 结构体*
|
||||
|
||||
在结构体定义中使用泛型特性的语法,与在函数定义中用到的类型。首先,这里在紧接着结构体名字之后的尖括号内部,声明了类型参数名字。随后在结构体定义中,在哪些原本会指明具体数据类型的地方,使用了该泛型。
|
||||
在结构体定义中使用泛型特性的语法,与在函数定义中用到的类似。首先,在紧接着结构体名字之后,咱们于尖括号内部,声明了类型参数的名字。随后咱们在原本指明具体类型的结构体定义中,用到了那个泛型。
|
||||
|
||||
请注意由于这里之用的一个泛型来定义 `Point<T>`,此定义是说,这个 `Point<T>` 结构体对某些类型 `T` 通用,且字段 `x` 与 `y` *均为* 那种同样类型,而不论那种类型可能是何种类型。在创建一个有着不同类型值的 `Point<T>` ,即下面清单 10-7 中那样,那么这里的代码就不会编译。
|
||||
请注意由于咱们只使用了一个泛型来定义 `Point<T>`,那么这个定义就是说,`Point<T>` 结构体对某些类型 `T` 通用,且不论那种类型为何,字段 `x` 与 `y` *均为* 那同一类型。当咱们要创建有着不同类型值的某个 `Point<T>` 时,如下面清单 10-7 中,那么咱们的代码就不会编译。
|
||||
|
||||
文件名:`src/main.rs`
|
||||
|
||||
@ -286,7 +286,7 @@ fn main() {
|
||||
|
||||
*清单 10-7:由于字段 `x` 与 `y` 有着同一泛型数据类型 `T`,因此他们必须为同一类型*
|
||||
|
||||
在此示例中,当这里将整数值 `5` 赋值给 `x` 时,那么就让编译器明白了该 `Point<T>` 实例的泛型 `T`,将是个整数。那么随后在将 `4.0` 指定给那个已被定义为与 `x` 有着同一类型的 `y` 时,就会得到一个像下面这样的类型不匹配错误:
|
||||
在此示例中,当咱们把整数值 `5` 赋值给 `x` 时,咱们就让编译器明白,这个 `Point<T>` 实例的泛型 `T` 将是个整数。随后在咱们把 `4.0` 指定给那个已被咱们定义为与 `x` 有着同一类型的 `y` 时,咱们将得到一个下面这样的类型不匹配错误:
|
||||
|
||||
```console
|
||||
$ cargo run lennyp@vm-manjaro
|
||||
@ -301,7 +301,7 @@ For more information about this error, try `rustc --explain E0308`.
|
||||
error: could not compile `generics_demo` due to previous error
|
||||
```
|
||||
|
||||
要定义一个其中 `x` 与 `y` 同时为泛型,而又可以有着不同类型的 `Point` 结构体,就可以使用多个泛型参数。比如,在下面清单 10-8 中,就将 `Point` 的定义,修改为了对类型 `T` 与 `U` 通用,其中 `x` 为类型 `T`,而 `y` 则是类型 `U`。
|
||||
要定义出其中 `x` 与 `y` 同时为泛型,又可以有着不同类型的 `Point` 结构体,咱们可使用多个泛型参数。比如,在下面清单 10-8 中,就将 `Point` 的定义,修改为了对类型 `T` 与 `U` 通用,其中 `x` 为类型 `T`,而 `y` 则是类型 `U`。
|
||||
|
||||
文件名:`src/main.rs`
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user