Skip to content

Commit 6f9f499

Browse files
committed
ch08-01:前半の訳を改善
1 parent fd91e7a commit 6f9f499

File tree

1 file changed

+47
-43
lines changed

1 file changed

+47
-43
lines changed

src/ch08-01-vectors.md

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ 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+
ベクタは単体のデータ構造でありながら複数の値を保持でき、それらの値をメモリ上に隣り合わせに並べます。
17+
ベクタには同じ型の値しか保持できません。
18+
要素のリストがある場合にベクタは有用です。
1819
例えば、テキストファイルの各行とか、ショッピングカートのアイテムの価格などです。
1920

2021
<!--
@@ -28,7 +29,7 @@ To create a new, empty vector, we can call the `Vec::new` function, as shown in
2829
Listing 8-1.
2930
-->
3031

31-
新しい空のベクタを作るには、リスト8-1に示されたように、`Vec::new`関数を呼べばよいです
32+
空のベクタを新たに作るには、リスト8-1に示すように`Vec::new`関数を呼びます
3233

3334
```rust
3435
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-01/src/main.rs:here}}
@@ -39,7 +40,7 @@ Listing 8-1.
3940
of type `i32`</span>
4041
-->
4142

42-
<span class="caption">リスト8-1: 新しい空のベクタを生成して`i32`型の値を保持する</span>
43+
<span class="caption">リスト8-1新しい空のベクタを生成して`i32`型の値を保持する</span>
4344

4445
<!--
4546
Note that we added a type annotation here. Because we aren’t inserting any
@@ -52,12 +53,13 @@ angle brackets. In Listing 8-1, we’ve told Rust that the `Vec<T>` in `v` will
5253
hold elements of the `i32` type.
5354
-->
5455

55-
ここで、型注釈を付けていることに注目してください。このベクタに対して、何も値を挿入していないので、
56-
コンパイラには、私達がどんなデータを保持させるつもりなのかがわからないのです。これは重要な点です。ベクタは、
57-
ジェネリクスを使用して実装されているのです; 独自の型でジェネリクスを使用する方法については、
58-
第10章で解説します。今は、標準ライブラリにより提供されている`Vec<T>`型は、どんな型でも保持でき、
59-
特定のベクタが特定の型を保持するとき、その型は山かっこ内に指定されることを知っておいてください。
60-
リスト8-1では、コンパイラに`v``Vec<T>`は、`i32`型の要素を保持すると指示しました。
56+
ここで、型注釈を付けていることに注目してください。
57+
なぜなら、このベクタに対して何も値を挿入していないので、コンパイラには私たちがどんなデータを保持させるつもりか推測できないからです。
58+
これは重要な点です。
59+
ベクタはジェネリクスを使用して実装されています。
60+
あなた自身の型でどうジェネリクスを使用するかついては第10章で解説します。
61+
現時点では標準ライブラリで提供される`Vec<T>`型は、どんな型でも保持でき、ある特定のベクタがある型を保持するとき、その型は山かっこ内に指定されることを知っておいてください。
62+
リスト8-1では、コンパイラに`v``Vec<T>``i32`型の要素を保持すると指示しました。
6163

6264
<!--
6365
In more realistic code, Rust can often infer the type of value you want to
@@ -70,11 +72,11 @@ the default integer type, as we discussed in the [“Data Types”][data-types]
7072
section of Chapter 3.
7173
-->
7274

73-
より現実的なコードでは、一旦値を挿入したら、コンパイラは保持させたい値の型をしばしば推論できるので、
74-
この型注釈をすることは滅多にありません。初期値のある`Vec<T>`を生成する方が一般的ですし、
75-
Rustには、利便性のために`vec!`というマクロも用意されています。このマクロは、
76-
与えた値を保持する新しいベクタ型を生成します。リスト8-2では、`1``2``3`という値を持つ新しい`Vec<i32>`を生成しています。
77-
整数型を`i32`にしているのは、3章の[「データ型」][data-types]節で学んだようにこれが標準の整数型だからです
75+
いったん値を挿入すれば、コンパイラは保持させたい値の型を多くの場合で推論できますので、より現実的なコードでは型注釈を付ける必要はほとんどないでしょう。
76+
また、初期値のある`Vec<T>`を生成する方が一般的ですし、Rustには`vec!`という便利なマクロも用意されています。
77+
このマクロは与えた値を保持する新しいベクタを生成します。
78+
リスト8-2では、`1``2``3`という値を持つ新しい`Vec<i32>`を生成しています。
79+
整数型を`i32`にしているのは、3章の[「データ型」][data-types]節で学んだように、これが標準の整数型だからです
7880

7981
```rust
8082
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-02/src/main.rs:here}}
@@ -93,8 +95,8 @@ is `Vec<i32>`, and the type annotation isn’t necessary. Next, we’ll look at
9395
to modify a vector.
9496
-->
9597

96-
初期値の`i32`値を与えたので、コンパイラは`v`の型が`Vec<i32>`であると推論でき、型注釈は必要なくなりました
97-
次は、ベクタを変更する方法を見ましょう
98+
初期値の`i32`値を与えたので、コンパイラは`v`の型が`Vec<i32>`であると推論でき、型注釈は不要になりました
99+
次はベクタを変更する方法を見ましょう
98100

99101
<!--
100102
### Updating a Vector
@@ -107,7 +109,7 @@ To create a vector and then add elements to it, we can use the `push` method,
107109
as shown in Listing 8-3.
108110
-->
109111

110-
ベクタを生成し、それから要素を追加するには、リスト8-3に示したように、`push`メソッドを使用できます
112+
ベクタを生成し、それから要素を追加するには、リスト8-3に示すように`push`メソッドを使います
111113

112114
```rust
113115
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-03/src/main.rs:here}}
@@ -118,7 +120,7 @@ as shown in Listing 8-3.
118120
vector</span>
119121
-->
120122

121-
<span class="caption">リスト8-3: `push`メソッドを使用してベクタ型に値を追加する</span>
123+
<span class="caption">リスト8-3`push`メソッドを使用してベクタに値を追加する</span>
122124

123125
<!--
124126
As with any variable, if we want to be able to change its value, we need to
@@ -127,9 +129,8 @@ we place inside are all of type `i32`, and Rust infers this from the data, so
127129
we don’t need the `Vec<i32>` annotation.
128130
-->
129131

130-
あらゆる変数同様、第3章で議論したように、値を変化させたかったら、`mut`キーワードで可変にする必要があります。
131-
中に配置する数値は全て`i32`型であり、コンパイラはこのことをデータから推論するので、
132-
`Vec<i32>`という注釈は必要なくなります。
132+
第3章で説明したとおり、どんな変数でも、その値を変更したかったら`mut`キーワードで可変にする必要があります。
133+
中に配置する数値は全て`i32`型であり、Rustはこのことをデータから推論するので、`Vec<i32>`という注釈は不要です。
133134

134135
<!--
135136
### Dropping a Vector Drops Its Elements
@@ -142,8 +143,8 @@ Like any other `struct`, a vector is freed when it goes out of scope, as
142143
annotated in Listing 8-4.
143144
-->
144145

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

148149
```rust
149150
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-04/src/main.rs:here}}
@@ -154,7 +155,7 @@ annotated in Listing 8-4.
154155
are dropped</span>
155156
-->
156157

157-
<span class="caption">リスト8-4: ベクタとその要素がドロップされる箇所を示す</span>
158+
<span class="caption">リスト8-4ベクタとその要素がドロップされる箇所を示す</span>
158159

159160
<!--
160161
When the vector gets dropped, all of its contents are also dropped, meaning
@@ -163,9 +164,10 @@ straightforward point but can get a bit more complicated when you start to
163164
introduce references to the elements of the vector. Let’s tackle that next!
164165
-->
165166

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

170172
<!--
171173
### Reading Elements of Vectors
@@ -180,16 +182,16 @@ value stored in a vector. In the examples, we’ve annotated the types of the
180182
values that are returned from these functions for extra clarity.
181183
-->
182184

183-
ベクタを生成し、更新し、破壊する方法を知ったので、中身を読む方法を次に知ることにしましょう
184-
ベクタに保持された値を参照する方法は2つあります。これから示す例では、さらに明確にするため、
185-
これらの関数から返る値の型を注釈しました
185+
ベクタを生成し、更新し、破棄する方法がわかったので、次のステップでは中身を読む方法について学ぶのが良いでしょう
186+
ベクタに保持された値を参照する方法は2つあります。
187+
これから示す例では、理解を助けるために、それらの関数からの戻り値型を注釈します
186188

187189
<!--
188190
Listing 8-5 shows both methods of accessing a value in a vector, either with
189191
indexing syntax or the `get` method.
190192
-->
191193

192-
リスト8-5に示したのは、両メソッドがベクタの値に対して、添字記法と`get`メソッドによりアクセスするところです
194+
リスト8-5はベクタの値にアクセスする両方の方法として、添字記法と`get`メソッドが示されています
193195

194196
```rust
195197
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-05/src/main.rs:here}}
@@ -200,7 +202,7 @@ indexing syntax or the `get` method.
200202
access an item in a vector</span>
201203
-->
202204

203-
<span class="caption">リスト8-5: 添字記法か`get`メソッドを使用してベクタの要素にアクセスする</span>
205+
<span class="caption">リスト8-5添字記法か`get`メソッドを使用してベクタの要素にアクセスする</span>
204206

205207
<!--
206208
Note two details here. First, we use the index value of `2` to get the third
@@ -210,9 +212,10 @@ or by using the `get` method with the index passed as an argument, which gives
210212
us an `Option<&T>`.
211213
-->
212214

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

217220
<!--
218221
Rust has two ways to reference an element so you can choose how the program
@@ -222,9 +225,9 @@ that holds five elements and then tries to access an element at index 100, as
222225
shown in Listing 8-6.
223226
-->
224227

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

229232
```rust,should_panic,panics
230233
{{#rustdoc_include ../listings/ch08-common-collections/listing-08-06/src/main.rs:here}}
@@ -235,7 +238,7 @@ Rustには要素を参照する方法が2通りあるので、ベクタに要素
235238
100 in a vector containing five elements</span>
236239
-->
237240

238-
<span class="caption">リスト8-6: 5つの要素を含むベクタの添え字100の要素にアクセスしようとする</span>
241+
<span class="caption">リスト8-65つの要素を含むベクタの添え字100の要素にアクセスしようとする</span>
239242

240243
<!--
241244
When we run this code, the first `[]` method will cause the program to panic
@@ -244,8 +247,9 @@ want your program to crash if there’s an attempt to access an element past the
244247
end of the vector.
245248
-->
246249

247-
このコードを走らせると、最初の`[]`メソッドはプログラムをパニックさせます。存在しない要素を参照しているからです。
248-
このメソッドは、ベクタの終端を超えて要素にアクセスしようとした時にプログラムをクラッシュさせたい場合に最適です。
250+
このコードを走らせると、最初の`[]`メソッドはプログラムをパニックさせます。
251+
なぜなら存在しない要素を参照しているからです。
252+
このメソッドは、ベクタの終端を超えて要素にアクセスしようとしたときにプログラムをクラッシュさせたい場合に最適です。
249253

250254
<!--
251255
When the `get` method is passed an index that is outside the vector, it returns

0 commit comments

Comments
 (0)