Skip to content

Commit 90dba58

Browse files
committed
以前の翻訳を修正
1 parent af60cc7 commit 90dba58

File tree

1 file changed

+45
-51
lines changed

1 file changed

+45
-51
lines changed

src/ch08-01-vectors.md

Lines changed: 45 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
## Storing Lists of Values with Vectors
33
-->
44

5-
## ベクタで一連の値を保持する
5+
## ベクタで値のリストを保持する
66

77
<!--
88
The first collection type we’ll look at is `Vec<T>`, also known as a *vector*.
@@ -12,9 +12,9 @@ of the same type. They are useful when you have a list of items, such as the
1212
lines of text in a file or the prices of items in a shopping cart.
1313
-->
1414

15-
最初に見るコレクションは`Vec<T>`であり、*ベクタ*としても知られています。ベクタは、
16-
メモリ上に値を隣り合わせに並べる単独のデータ構造に2つ以上の値を保持させてくれます
17-
ベクタには、同じ型の値しか保持できません。要素のリストがある場合に有用です
15+
最初に見るコレクション型は`Vec<T>`であり、これは*ベクタ*としても知られています。ベクタは、
16+
メモリ上に値を隣り合わせに並べる単独のデータ構造で、2つ以上の値を保持することができます
17+
ベクタには、同じ型の値しか保持できません。要素のリストがある場合にベクタは有用です
1818
例えば、テキストファイルの各行とか、ショッピングカートのアイテムの価格などです。
1919

2020
<!--
@@ -52,8 +52,8 @@ angle brackets. In Listing 8-1, we’ve told Rust that the `Vec<T>` in `v` will
5252
hold elements of the `i32` type.
5353
-->
5454

55-
ここでは、型注釈を付け足したことに注目してください。このベクタに対して、何も値を挿入していないので、
56-
コンパイラには、どんなデータを保持させるつもりなのかわからないのです。これは重要な点です。ベクタは、
55+
ここで、型注釈を付けていることに注目してください。このベクタに対して、何も値を挿入していないので、
56+
コンパイラには、私達がどんなデータを保持させるつもりなのかがわからないのです。これは重要な点です。ベクタは、
5757
ジェネリクスを使用して実装されているのです; 独自の型でジェネリクスを使用する方法については、
5858
第10章で解説します。今は、標準ライブラリにより提供されている`Vec<T>`型は、どんな型でも保持でき、
5959
特定のベクタが特定の型を保持するとき、その型は山かっこ内に指定されることを知っておいてください。
@@ -142,7 +142,7 @@ Like any other `struct`, a vector is freed when it goes out of scope, as
142142
annotated in Listing 8-4.
143143
-->
144144

145-
他のあらゆる`構造体`同様、ベクタもスコープを抜ければ、解放されます。リスト8-4に注釈したようにですね。
145+
他のあらゆる`struct`(構造体)同様、ベクタもスコープを抜ければ、解放されます。リスト8-4に注釈したようにですね。
146146

147147

148148
```rust
@@ -164,7 +164,7 @@ introduce references to the elements of the vector. Let’s tackle that next!
164164
-->
165165

166166
ベクタがドロップされると、その中身もドロップされます。つまり、保持されていた整数値が、
167-
片付けられるということです。これは一見単純な点に見えるかもしれませんが、ベクタの要素への参照を導入した途端、
167+
片付けられるということです。これは一見単純に見えるかもしれませんが、ベクタの要素への参照を導入した途端、
168168
もうちょっと複雑になる可能性を秘めています。次は、それに挑んでいきましょう!
169169

170170
<!--
@@ -180,8 +180,8 @@ value stored in a vector. In the examples, we’ve annotated the types of the
180180
values that are returned from these functions for extra clarity.
181181
-->
182182

183-
もうベクタを生成し、更新し、破壊する方法を知ったので、中身を読む方法を知るのはいいステップアップです
184-
ベクタに保持された値を参照する方法は2つあります。例では、さらなる明瞭性を求めて
183+
ベクタを生成し、更新し、破壊する方法を知ったので、中身を読む方法を次に知ることにしましょう
184+
ベクタに保持された値を参照する方法は2つあります。これから示す例では、さらに明確にするため
185185
これらの関数から返る値の型を注釈しました。
186186

187187
<!--
@@ -211,8 +211,8 @@ us an `Option<&T>`.
211211
-->
212212

213213
ここでは、2つのことに注目してください。まず、3番目の要素を得るのに`2`という添え字の値を使用していることです:
214-
ベクタは、数値により順序付けされ、添え字は0から始まります。2番目に、3番目の要素を得る2つの方法は
215-
`&``[]`を使用して参照を得るものと、番号を引数として`get`メソッドに渡して、`Option<&T>`を得るものということです
214+
ベクタは、数値により順序付けされ、添え字は0から始まります。2番目に、3番目の要素を得る2つの方法とは
215+
`&``[]`を使用して参照を得るものと、番号を引数として`get`メソッドに渡して、`Option<&T>`を得るものだということです
216216

217217
<!--
218218
Rust has two ways to reference an element so you can choose how the program
@@ -223,8 +223,8 @@ shown in Listing 8-6.
223223
-->
224224

225225
Rustには要素を参照する方法が2通りあるので、ベクタに要素が含まれない番号の値を使用しようとした時に、
226-
プログラムの振る舞いを選択できます。例として、ベクタに5つ要素があり、添え字100の要素にアクセスを試みた場合、
227-
プログラムがすることを確認しましょう。リスト8-6に示したようにですね。
226+
プログラムの振る舞いを選択できます。例として、ベクタに5つ要素があるとして、添え字100の要素にアクセスを試みた場合、
227+
プログラムがどうなるのか確認しましょう。リスト8-6に示したようにですね。
228228

229229
```rust,should_panic,panics
230230
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-06/src/main.rs:here}}
@@ -260,11 +260,11 @@ value. That would be more user-friendly than crashing the program due to a typo!
260260
-->
261261

262262
`get`メソッドがベクタ外の添え字を渡されると、パニックすることなく`None`を返します。
263-
普通の状態でも、ベクタの範囲外にアクセスする可能性がある場合に、このメソッドを使用することになるでしょう。
264-
そうしたら、コードには`Some(&element)``None`を扱うロジックが存在することになります。そう、
265-
第6章で議論したように。例えば、添え字は人間に数値を入力してもらうことで得ることもできます
263+
普通の状況でもベクタの範囲外にアクセスする可能性がある場合に、このメソッドを使用することになるでしょう。
264+
そうしたら、第6章で議論したように、コードには`Some(&element)``None`を扱うロジックが存在することになります。
265+
例えば、添え字は人間に数値を入力してもらうことで得ているのかもしれません
266266
もし大きすぎる値を誤って入力し、プログラムが`None`値を得てしまったら、現在ベクタに幾つ要素があるかをユーザに教え、
267-
再度正しい値を入力してもらうことができるでしょう。その方が、タイプミスでプログラムをクラッシュさせるより、
267+
再度正しい値を入力してもらうことができるでしょう。その方が、(ただの)タイプミスでプログラムをクラッシュさせるより、
268268
ユーザに優しくなるでしょう。
269269

270270
<!--
@@ -277,12 +277,12 @@ the first element in a vector and try to add an element to the end, which won’
277277
work if we also try to refer to that element later in the function:
278278
-->
279279

280-
プログラムに有効な参照がある場合、借用チェッカー(borrow checker)は(第4章で解説しましたが)
280+
プログラムに有効な参照がある場合、借用チェッカー (borrow checker) は (第4章で解説しましたが
281281
所有権と借用規則を強制し、ベクタの中身へのこの参照や他のいかなる参照も有効であり続けることを保証してくれます。
282282
同一スコープ上では、可変と不変な参照を同時には存在させられないというルールを思い出してください。
283-
このルールはリスト8-7にも適用され、リスト8-7ではベクタの最初の要素への不変参照を保持し
283+
このルールはリスト8-7でも適用されています。リスト8-7ではベクタの最初の要素への不変参照を保持しつつ
284284
終端に要素を追加しようとしています。
285-
もし、関数内のここ以降で、この要素を参照しようとしている場合、これは動きません
285+
関数内のここ以降で、この要素(訳注:`first`のこと)を参照しようとすると失敗します
286286

287287
```rust,ignore,does_not_compile
288288
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-07/src/main.rs:here}}
@@ -316,21 +316,19 @@ element would be pointing to deallocated memory. The borrowing rules prevent
316316
programs from ending up in that situation.
317317
-->
318318

319-
リスト8-7のコードは、一見動くはずのように見えるかもしれません: なぜ、最初の要素への参照が、
320-
ベクタの終端への変更を気にかける必要があるのでしょうか?このエラーは、ベクタの動作法のせいです:
319+
リスト8-7のコードは、一見動くはずに見えるかもしれません: なぜ、最初の要素への参照が、
320+
ベクタの終端への変更を気にかける必要があるのでしょうか?このエラーは、ベクタの動作する仕組みのせいです:
321321
新規要素をベクタの終端に追加すると、ベクタが現在存在する位置に隣り合って要素を入れるだけの領域がなかった場合に、
322-
メモリの新規確保をして古い要素を新しいスペースにコピーする必要があるかもしれないからです
323-
その場合、最初の要素を指す参照は、解放されたメモリを指すことになるでしょう。借用規則により、
324-
そのような場面に陥らないよう回避されるのです
322+
メモリを新規に確保して、古い要素をその新しいスペースにコピーする必要があるかもしれないからです
323+
その場合、最初の要素を指す参照は、解放されたメモリを指すことになるでしょう。
324+
借用規則がそのような場面に陥らないよう防いでくれるのです
325325

326326
<!--
327327
> Note: For more on the implementation details of the `Vec<T>` type, see [“The
328328
> Rustonomicon”][nomicon].
329329
-->
330330

331-
> 注釈: `Vec<T>`の実装に関する詳細については、[“The Rustonomicon”][nomicon]を参照してください。
332-
333-
> 訳注: 日本語版のThe Rustonomiconは[こちら][nomicon-ja-vec]です。
331+
> 注釈: `Vec<T>`の実装に関する詳細については、[“The Rustonomicon”][nomicon]を参照してください (訳注:日本語版は[こちら][nomicon-ja-vec]です)。
334332
335333
[nomicon-ja-vec]: https://doc.rust-jp.rs/rust-nomicon-ja/vec.html
336334

@@ -347,7 +345,7 @@ all of the elements rather than use indices to access one at a time. Listing
347345
in a vector of `i32` values and print them.
348346
-->
349347

350-
ベクタの要素に順番にアクセスしたいなら、添え字で1回に1要素にアクセスするのではなく、全要素を走査することができます。
348+
ベクタの要素に順番にアクセスしたいなら、添え字で1要素ごとにアクセスするのではなく、全要素を走査することができます。
351349
リスト8-8で`for`ループを使い、`i32`のベクタの各要素に対する不変な参照を得て、それらを出力する方法を示しています。
352350

353351
```rust
@@ -367,7 +365,7 @@ in order to make changes to all the elements. The `for` loop in Listing 8-9
367365
will add `50` to each element.
368366
-->
369367

370-
全要素に変更を加える目的で、可変なベクタの各要素への可変な参照を走査することもできます。
368+
全要素に変更を加えるために、可変なベクタの各要素への可変な参照を走査することもできます。
371369
リスト8-9の`for`ループでは、各要素に`50`を足しています。
372370

373371
```rust
@@ -408,9 +406,9 @@ store elements of a different type in a vector, we can define and use an enum!
408406
-->
409407

410408
この章の冒頭で、ベクタは同じ型の値しか保持できないと述べました。これは不便なこともあります;
411-
異なる型の要素を保持する必要性が出てくるユースケースも確かにあるわけです。幸運なことに、
412-
enumの列挙子は、同じenumの型の元に定義されるので、ベクタに異なる型の要素を保持する必要が出たら、
413-
enumを定義して使用することができます
409+
異なる型の要素を保持する必要性が出てくるユースケースもきっとあります。幸運なことに、
410+
enumの列挙子は、同じenumの型の中に定義されるので、ベクタに異なる型の要素を保持する必要が出たら、
411+
enumを定義して使用すればよいというわけです
414412

415413
<!--
416414
For example, say we want to get values from a row in a spreadsheet in which
@@ -423,8 +421,8 @@ ultimately, holds different types. We’ve demonstrated this in Listing 8-10.
423421

424422
例えば、スプレッドシートの行から値を得たくなったとしましょう。ここで行の列には、整数を含むものや、
425423
浮動小数点数を含むもの、文字列を含むものがあります。列挙子が異なる値の型を保持するenumを定義できます。
426-
そして、このenumの列挙子は全て同じ型: enumの型と考えられるわけです。それからそのenumを保持するベクタを生成でき
427-
結果的に異なる型を保持できるようになるわけです。リスト8-10でこれを模擬しています
424+
そして、このenumの列挙子は全て同じ型、つまりenumの型、と考えられるわけです。というわけでそのenumを保持するベクタを生成でき
425+
結果的に異なる型を保持できるようになるわけです。リスト8-10でこれを実演しています
428426

429427
```rust
430428
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-10/src/main.rs:here}}
@@ -448,21 +446,20 @@ that Rust will ensure at compile time that every possible case is handled, as
448446
discussed in Chapter 6.
449447
-->
450448

451-
各要素を格納するのにヒープ上でズバリどれくらいのメモリが必要になるかをわかるように、
452-
コンパイラがコンパイル時にベクタに入る型を知る必要があります。副次的な利点は、
453-
このベクタではどんな型が許容されるのか明示できることです。もしRustでベクタがどんな型でも保持できたら、
454-
ベクタの要素に対して行われる処理に対して一つ以上の型がエラーを引き起こす可能性があったでしょう。
455-
enumに加えて`match`式を使うことは、第6章で議論した通り、コンパイル時にありうる場合全てに対処していることをコンパイラが、
456-
保証できることを意味します。
449+
各要素を格納するのにヒープ上でズバリどれくらいのメモリが必要になるかがわかるように、
450+
Rustコンパイラはコンパイル時にベクタに入る型を知る必要があります。また、
451+
このベクタではどんな型が許容されるのか明示できるという副次的な利点があります。もし、Rustコンパイラが、ベクタがどんな型でも保持できるようにしていたら、
452+
ベクタの要素に対して行われる処理に対して一つ以上の型がエラーを引き起こす可能性があるでしょう。
453+
enumに加えて`match`式を使うことは、第6章で議論した通り、あり得るパターン全てに対処していることをRustコンパイラがコンパイル時に保証するということを意味します。
457454

458455
<!--
459456
When you’re writing a program, if you don’t know the exhaustive set of types
460457
the program will get at runtime to store in a vector, the enum technique won’t
461458
work. Instead, you can use a trait object, which we’ll cover in Chapter 17.
462459
-->
463460

464-
プログラム記述時にプログラムがベクタに実行時に保持するありとあらゆる一連の型をプログラマが知らない場合
465-
このenumテクニックはうまく動かないでしょう。代わりにトレイトオブジェクトを使用することができ、こちらは第17章で講義します。
461+
プログラムを書いている時に、プログラムが実行時に受け取り、ベクタに保持するであろう型のすべてを知っているわけではない場合
462+
このenumを使ったテクニックはうまくいかないでしょう。代わりにトレイトオブジェクトを使用することができます。こちらは第17章で講義します。
466463

467464
<!--
468465
Now that we’ve discussed some of the most common ways to use vectors, be sure
@@ -472,13 +469,10 @@ method removes and returns the last element. Let’s move on to the next
472469
collection type: `String`!
473470
-->
474471

475-
<!--
476-
1行目、discussed some of を「について触れ、議論した」と訳した
477-
-->
478-
479-
今や、ベクタを使用するべき最も一般的な方法について触れ、議論したので、標準ライブラリで`Vec<T>`に定義されている多くの有益なメソッドについては、
480-
[APIドキュメント][vec-api]を確認することを心得てください。例として、`push`に加えて、`pop`メソッドは最後の要素を削除して返します。
481-
次のコレクション型に移りましょう: `String`です!
472+
今まで議論したのは、ベクタを使用するために最もよく使う方法のいくつか(に過ぎない)です。
473+
ですので、標準ライブラリで`Vec<T>`に定義されている多くの有益なメソッドについて、
474+
[APIドキュメント][vec-api]を必ず確認するようにしてください。例えば、`push`に加えて、`pop`というメソッドがあり、これは最後の要素を削除して返します。
475+
それでは次のコレクション型に移りましょう: `String`です!
482476

483477
<!--
484478
[data-types]: ch03-02-data-types.html#data-types

0 commit comments

Comments
 (0)