[C 50 pter 3-4]Rust制御文if,loop,while,for
if
fn main() {
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
if
キーワードから始まり、条件です.選択的に else if
, else
式を含めることができます.上のコードには4つのパスがあります.多すぎる else if
フォーマットの使用はコードを理解しにくい.そのため,後述する第6章では match
強力なブランチ作成者を使用します.別の例を見てみましょう.
fn main() {
let number = 3;
if number {
println!("number was three");
}
}위의 예시 코드는 에러가 발생하게 됩니다.
上記のサンプルコードでは、エラーが発生します.error[E0308]: mismatched types
--> src/main.rs:4:8
|
4 | if number {
| ^^^^^^ expected bool, found integral variable
|
= note: expected type `bool`
found type `{integer}`
RustはBooleanタイプを期待していましたが整数型が来ました他の言語と異なりRUSTはbooleanタイプ以外をbooleanタイプとする 自動変換しません.数値が0でない場合に上記のコードを実行する場合は、次のように変更できます.
fn main() {
let number = 3;
if number != 0 {
println!("number was something other than zero");
}
}
let構文でifを使用する
if
は式であるため、let
構文の右側に使用することができる.fn main() {
let condition = true;
let number = if condition {
5
} else {
6
};
println!("The value of number is: {}", number);
}
上のコードを実行します. number
if
数式 5
バインド.別の例を見てみましょう.
fn main() {
let condition = true;
let number = if condition {
5
} else {
"six"
};
println!("The value of number is: {}", number);
}
error[E0308]: if and else have incompatible types
--> src/main.rs:4:18
|
4 | let number = if condition {
| __________________^
5 | | 5
6 | | } else {
7 | | "six"
8 | | };
| |_____^ expected integral variable, found reference
|
= note: expected type `{integer}`
found type `&str`
以上のコードでエラーが発生したのは,if
ブロックが整数を生成し,else
ブロックが文字列を生成したためである.このような状況が成立しないのは,変数が1つのタイプしか持たないからである.コンパイル時、RUSTはnumber
変数のタイプを正確に定義しなければならない.RUSTは、実行時にnumber
タイプを定義できません.繰り返しと繰り返し
loop:コードの繰り返し
fn main() {
loop {
println!("again!");
}
}
上のコードはプログラムを強制停止する前に again!
重複出力が表示されます.ほとんどの端末はキーボードショートカットCtrl+Cで停止できます.loop
コード内 break
キーワードを追加してループを停止できます.while:条件繰返し
fn main() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number = number - 1;
}
println!("LIFTOFF!!!");
}
for:繰り返し集合
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("the value is: {}", element);
}
}
$ cargo run
Compiling loops v0.1.0 (file:///projects/loops)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
Running `target/debug/loops`
the value is: 10
the value is: 20
the value is: 30
the value is: 40
the value is: 50
for
反復文を使用するために、通常、RUSTによって提供されるRange
は、マスターライブラリとともに使用される.Range
は、1つの数字から別の数字までのすべての数字を生成します.fn main() {
for number in (1..4).rev() {
println!("{}!", number);
}
println!("LIFTOFF!!!");
}
3!
2!
1!
LIFTOFF!!!
Reference
この問題について([C 50 pter 3-4]Rust制御文if,loop,while,for), 我々は、より多くの情報をここで見つけました https://velog.io/@inhwa1025/Chapter3-4-Rust-제어문-if-loop-while-forテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol