@@ -184,7 +184,7 @@ <h1 class="title">変数束縛</h1>
184
184
185
185
<!-- bind some value to a name, so it can be used later. `let` is -->
186
186
187
- <!-- used to introduce a binding, just like this: -->
187
+ <!-- used to introduce a binding, like this: -->
188
188
189
189
< p > 事実上全ての「Hello World」でないRustのプログラムは < em > 変数束縛</ em > を使っています。
190
190
変数束縛は何らかの値を名前へと束縛するので、後でその値を使えます。
@@ -219,30 +219,30 @@ <h1 id='パターン' class='section-header'><a href='#パターン'>パター
219
219
220
220
<!-- variable bindings have a few tricks up their sleeves. For example the -->
221
221
222
- <!-- left-hand side of a `let` expression is a ‘[pattern][pattern]’, not just a -->
222
+ <!-- left-hand side of a `let` statement is a ‘[pattern][pattern]’, not just a -->
223
223
224
224
<!-- variable name. This means we can do things like: -->
225
225
226
226
< p > 多くの言語では変数束縛は < em > 変数</ em > と呼ばれるでしょうが、Rustの変数束縛は多少皮を被せてあります。
227
- 例えば、 < code > let</ code > の左側の式は 「< a href ="patterns.html "> パターン</ a > 」であって、ただの変数名ではありません。
228
- これはこのようなことが出来るということです 。</ p >
227
+ 例えば、 < code > let</ code > 文の左側は 「< a href ="patterns.html "> パターン</ a > 」であって、ただの変数名ではありません。
228
+ これはこのようなことができるということです 。</ p >
229
229
230
230
< span class ='rusttest '> fn main() {
231
231
let (x, y) = (1, 2);
232
232
}</ span > < pre class ='rust rust-example-rendered '>
233
233
< span class ='kw '> let</ span > (< span class ='ident '> x</ span > , < span class ='ident '> y</ span > ) < span class ='op '> =</ span > (< span class ='number '> 1</ span > , < span class ='number '> 2</ span > );</ pre >
234
234
235
- <!-- After this expression is evaluated, `x` will be one, and `y` will be two. -->
235
+ <!-- After this statement is evaluated, `x` will be one, and `y` will be two. -->
236
236
237
237
<!-- Patterns are really powerful, and have [their own section][pattern] in the -->
238
238
239
- <!-- book. We don’t need those features for now, so we’ll just keep this in the back -->
239
+ <!-- book. We don’t need those features for now, so we’ll keep this in the back -->
240
240
241
241
<!-- of our minds as we go forward. -->
242
242
243
- < p > パターン式が評価されたあと 、 < code > x</ code > は1になり、 < code > y</ code > は2になります。
243
+ < p > この文が評価されたあと 、 < code > x</ code > は1になり、 < code > y</ code > は2になります。
244
244
パターンは本当に強力で、本書には< a href ="patterns.html "> パターンのセクション</ a > もあります。
245
- 今のところこの機能は必要ないので頭の片隅に留めておいてだけいて下さい 。</ p >
245
+ 今のところこの機能は必要ないので頭の片隅に留めておいてだけいてください 。</ p >
246
246
247
247
<!-- # Type annotations -->
248
248
@@ -259,11 +259,11 @@ <h1 id='型アノテーション' class='section-header'><a href='#型アノテ
259
259
260
260
< p > Rustは静的な型付言語であり、前もって型を与えておいて、それがコンパイル時に検査されます。
261
261
じゃあなぜ最初の例はコンパイルが通るのでしょう?ええと、Rustには「型推論」と呼ばれるものがあります。
262
- 型推論が型が何であるか判断出来るなら 、型を書く必要はなくなります。</ p >
262
+ 型推論が型が何であるか判断できるなら 、型を書く必要はなくなります。</ p >
263
263
264
264
<!-- We can add the type if we want to, though. Types come after a colon (`:`): -->
265
265
266
- < p > 書きたいなら型を書くことも出来ます 。型はコロン(< code > :</ code > )のあとに書きます。</ p >
266
+ < p > 書きたいなら型を書くこともできます 。型はコロン(< code > :</ code > )のあとに書きます。</ p >
267
267
268
268
< span class ='rusttest '> fn main() {
269
269
let x: i32 = 5;
@@ -311,7 +311,7 @@ <h1 id='型アノテーション' class='section-header'><a href='#型アノテ
311
311
312
312
<!-- infers are. -->
313
313
314
- < p > この注釈と < code > let</ code > の時に使う記法の類似性に留意して下さい 。
314
+ < p > この注釈と < code > let</ code > の時に使う記法の類似性に留意してください 。
315
315
このようなコメントを書くのはRust的ではありませんが、時折理解の手助けのためにRustが推論する型をコメントで注釈します。</ p >
316
316
317
317
<!-- # Mutability -->
@@ -365,7 +365,7 @@ <h1 id='可変性' class='section-header'><a href='#可変性'>可変性</a></h1
365
365
366
366
<!-- mutation, then the solution is quite easy: add `mut`. -->
367
367
368
- < p > 束縛がデフォルトでイミュータブルであるのは複合的な理由によるものですが、Rustの主要な焦点、安全性の一環だと考えることが出来ます 。
368
+ < p > 束縛がデフォルトでイミュータブルであるのは複合的な理由によるものですが、Rustの主要な焦点、安全性の一環だと考えることができます 。
369
369
もし < code > mut</ code > を忘れたらコンパイラが捕捉して、変更するつもりでなかったものを変更した旨を教えてくれます。
370
370
束縛がデフォルトでミュータブルだったらコンパイラはこれを捕捉できません。
371
371
もし < em > 本当に</ em > 変更を意図していたのなら話は簡単です。 < code > mut</ code > をつけ加えればいいのです。</ p >
@@ -395,7 +395,7 @@ <h1 id='束縛を初期化する' class='section-header'><a href='#束縛を初
395
395
396
396
<!-- Let’s try it out. Change your `src/main.rs` file to look like this: -->
397
397
398
- < p > 試してみましょう。 < code > src/main.rs</ code > をいじってこのようにしてみて下さい 。</ p >
398
+ < p > 試してみましょう。 < code > src/main.rs</ code > をいじってこのようにしてみてください 。</ p >
399
399
400
400
< span class ='rusttest '> fn main() {
401
401
let x: i32;
@@ -413,8 +413,8 @@ <h1 id='束縛を初期化する' class='section-header'><a href='#束縛を初
413
413
414
414
<!-- warning, but it will still print "Hello, world!": -->
415
415
416
- < p > コマンドラインで < code > cargo build</ code > を使ってビルド出来ます 。
417
- 警告が出ますが、それでもまだ「Hello, world!」は印字されます 。</ p >
416
+ < p > コマンドラインで < code > cargo build</ code > を使ってビルドできます 。
417
+ 警告が出ますが、それでもまだ「Hello, world!」は表示されます 。</ p >
418
418
419
419
< pre > < code class ="language-text "> Compiling hello_world v0.0.1 (file:///home/you/projects/hello_world)
420
420
src/main.rs:2:9: 2:10 warning: unused variable: `x`, #[warn(unused_variable)]
@@ -431,7 +431,7 @@ <h1 id='束縛を初期化する' class='section-header'><a href='#束縛を初
431
431
432
432
< p > Rustは一度も使われない変数について警告を出しますが、一度も使われないので人畜無害です。
433
433
ところがこの < code > x</ code > を使おうとすると事は一変します。やってみましょう。
434
- プログラムをこのように変更して下さい 。</ p >
434
+ プログラムをこのように変更してください 。</ p >
435
435
436
436
< span class ='rusttest '> fn main() {
437
437
let x: i32;
@@ -447,7 +447,7 @@ <h1 id='束縛を初期化する' class='section-header'><a href='#束縛を初
447
447
448
448
<!-- And try to build it. You’ll get an error: -->
449
449
450
- < p > そしてビルドしてみて下さい。このようなエラーが出る筈です 。</ p >
450
+ < p > そしてビルドしてみてください。このようなエラーが出るはずです 。</ p >
451
451
452
452
< pre > < code class ="language-bash "> $ cargo build
453
453
Compiling hello_world v0.0.1 (file:///home/you/projects/hello_world)
@@ -481,25 +481,25 @@ <h1 id='束縛を初期化する' class='section-header'><a href='#束縛を初
481
481
482
482
<!-- arguments we pass to functions and macros, if you’re passing more than one. -->
483
483
484
- < p > 印字する文字列に2つの波括弧 (< code > {}</ code > 、口髭という人もいます…(訳注: 海外の顔文字は横になっているので首を傾けて < code > {</ code > を眺めてみて下さい 。また、日本語だと「中括弧」と呼ぶ人もいますね))を入れました。
485
- Rustはこれを何かの値を入れて (interpolate、インターポーレート)くれという要求だと解釈します 。
486
- < em > 文字列インターポーレーション </ em > (String interpolation)はコンピュータサイエンスの用語で、「文字列の中に差し込む 」という意味です。
487
- その後に続けてカンマ、そして < code > x</ code > を置いて < code > x</ code > がインターポーレートしようとしている値だと指示しています 。
484
+ < p > 表示する文字列に2つの波括弧 (< code > {}</ code > 、口髭という人もいます…(訳注: 海外の顔文字は横になっているので首を傾けて < code > {</ code > を眺めてみてください 。また、日本語だと「中括弧」と呼ぶ人もいますね))を入れました。
485
+ Rustはこれを、何かの値で補間 (interpolate)してほしいのだと解釈します 。
486
+ < em > 文字列補間 </ em > (string interpolation)はコンピュータサイエンスの用語で、「文字列の間に差し込む 」という意味です。
487
+ その後に続けてカンマ、そして < code > x</ code > を置いて、 < code > x</ code > が補間に使う値だと指示しています 。
488
488
カンマは2つ以上の引数を関数やマクロに渡す時に使われます。</ p >
489
489
490
- <!-- When you just use the curly braces, Rust will attempt to display the value in a -->
490
+ <!-- When you use the curly braces, Rust will attempt to display the value in a -->
491
491
492
492
<!-- meaningful way by checking out its type. If you want to specify the format in a -->
493
493
494
494
<!-- more detailed manner, there are a [wide number of options available][format]. -->
495
495
496
- <!-- For now, we'll just stick to the default: integers aren't very complicated to -->
496
+ <!-- For now, we'll stick to the default: integers aren't very complicated to -->
497
497
498
498
<!-- print. -->
499
499
500
- < p > 単に波括弧だけを使った時は、Rustはインターポーレートされる値の型を調べて意味のある方法で表示しようとします 。
501
- フォーマットをさらに詳しく指定したいなら< a href ="../std/fmt/index.html "> 数多くのオプションが利用出来ます </ a > 。
502
- とりあえずのところ、デフォルトに従いましょう。整数の印字はそれほど複雑ではありません 。</ p >
500
+ < p > 波括弧を使うと、Rustは補間に使う値の型を調べて意味のある方法で表示しようとします 。
501
+ フォーマットをさらに詳しく指定したいなら< a href ="../std/fmt/index.html "> 数多くのオプションが利用できます </ a > 。
502
+ とりあえずのところ、デフォルトに従いましょう。整数の表示はそれほど複雑ではありません 。</ p >
503
503
504
504
<!-- # Scope and shadowing -->
505
505
@@ -519,7 +519,7 @@ <h1 id='スコープとシャドーイング' class='section-header'><a href='#
519
519
< p > 束縛に話を戻しましょう。変数束縛にはスコープがあります。変数束縛は定義されたブロック内でしか有効でありません。
520
520
ブロックは < code > {</ code > と < code > }</ code > に囲まれた文の集まりです。関数定義もブロックです!
521
521
以下の例では異なるブロックで有効な2つの変数束縛、 < code > x</ code > と < code > y</ code > を定義しています。
522
- < code > x</ code > は < code > fn main() {}</ code > ブロックの中でアクセス可能ですが、 < code > y</ code > は内側のブロックからのみアクセス出来ます 。</ p >
522
+ < code > x</ code > は < code > fn main() {}</ code > ブロックの中でアクセス可能ですが、 < code > y</ code > は内側のブロックからのみアクセスできます 。</ p >
523
523
524
524
< span class ='rusttest '> fn main() {
525
525
let x: i32 = 17;
@@ -548,8 +548,8 @@ <h1 id='スコープとシャドーイング' class='section-header'><a href='#
548
548
549
549
<!-- Instead we get this error: -->
550
550
551
- < p > 最初の < code > println!</ code > は「The value of x is 17 and the value of y is 3」(訳注: 「xの値は17でyの値は3」)と印字する筈ですが 、
552
- 2つめの < code > println!</ code > は < code > y</ code > がもうスコープにいないため < code > y</ code > にアクセス出来ないのでこの例はコンパイル出来ません 。
551
+ < p > 最初の < code > println!</ code > は「The value of x is 17 and the value of y is 3」(訳注: 「xの値は17でyの値は3」)と表示するはずですが 、
552
+ 2つめの < code > println!</ code > は < code > y</ code > がもうスコープにいないため < code > y</ code > にアクセスできないのでこの例はコンパイルできません 。
553
553
代わりに以下のようなエラーが出ます。</ p >
554
554
555
555
< pre > < code class ="language-bash "> $ cargo build
@@ -576,33 +576,33 @@ <h1 id='スコープとシャドーイング' class='section-header'><a href='#
576
576
577
577
<!-- scope, will override the previous binding. -->
578
578
579
- < p > さらに加えて、変数束縛は覆い隠すことが出来ます (訳注: このことをシャドーイングと言います)。
579
+ < p > さらに加えて、変数束縛は覆い隠すことができます (訳注: このことをシャドーイングと言います)。
580
580
つまり後に出てくる同じ名前の変数束縛があるとそれがスコープに入り、以前の束縛を上書きするのです。</ p >
581
581
582
582
< span class ='rusttest '> fn main() {
583
583
let x: i32 = 8;
584
584
{
585
585
// println!("{}", x); // Prints "8"
586
- println!("{}", x); // "8"を印字する
586
+ println!("{}", x); // "8"を表示する
587
587
let x = 12;
588
588
// println!("{}", x); // Prints "12"
589
- println!("{}", x); // "12"を印字する
589
+ println!("{}", x); // "12"を表示する
590
590
}
591
591
// println!("{}", x); // Prints "8"
592
- println!("{}", x); // "8"を印字する
592
+ println!("{}", x); // "8"を表示する
593
593
let x = 42;
594
594
// println!("{}", x); // Prints "42"
595
- println!("{}", x); // "42"を印字する
595
+ println!("{}", x); // "42"を表示する
596
596
}</ span > < pre class ='rust rust-example-rendered '>
597
597
< span class ='kw '> let</ span > < span class ='ident '> x</ span > : < span class ='ident '> i32</ span > < span class ='op '> =</ span > < span class ='number '> 8</ span > ;
598
598
{
599
- < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "8"を印字する </ span >
599
+ < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "8"を表示する </ span >
600
600
< span class ='kw '> let</ span > < span class ='ident '> x</ span > < span class ='op '> =</ span > < span class ='number '> 12</ span > ;
601
- < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "12"を印字する </ span >
601
+ < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "12"を表示する </ span >
602
602
}
603
- < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "8"を印字する </ span >
603
+ < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "8"を表示する </ span >
604
604
< span class ='kw '> let</ span > < span class ='ident '> x</ span > < span class ='op '> =</ span > < span class ='number '> 42</ span > ;
605
- < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "42"を印字する </ span > </ pre >
605
+ < span class ='macro '> println</ span > < span class ='macro '> !</ span > (< span class ='string '> "{}"</ span > , < span class ='ident '> x</ span > ); < span class ='comment '> // "42"を表示する </ span > </ pre >
606
606
607
607
<!-- Shadowing and mutable bindings may appear as two sides of the same coin, but -->
608
608
@@ -612,8 +612,8 @@ <h1 id='スコープとシャドーイング' class='section-header'><a href='#
612
612
613
613
<!-- is also possible to change the mutability of a binding. -->
614
614
615
- < p > シャドーイングとミュータブルな束縛はコインの表と裏のように見えるかもしれませんが、それぞれ独立な概念であり互いに代用が出来ないケースがあります 。
616
- その1つにシャドーイングは同じ名前に違う型の値を再束縛することが出来ます 。</ p >
615
+ < p > シャドーイングとミュータブルな束縛はコインの表と裏のように見えるかもしれませんが、それぞれ独立な概念であり互いに代用ができないケースがあります 。
616
+ その1つにシャドーイングは同じ名前に違う型の値を再束縛することができます 。</ p >
617
617
618
618
< span class ='rusttest '> fn main() {
619
619
let mut x: i32 = 1;
0 commit comments