κ°μ
λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄λ μ‘°κ±΄μ΄ true
μΈ κ²½μ° μ½λλ₯Ό μ€ννκ±°λ, μ‘°κ±΄μ΄ κ³μ true
μΈ λμ μ½λλ₯Ό λ°λ³΅ν΄μ μ€ννλ κΈ°λ₯μ μ 곡νλ€. Rustμμλ if
ννμκ³Ό 루νλ‘ μ€ν νλ¦μ μ μ΄νλ€.
if ννμ
if
ννμμΌλ‘ 쑰건μ λ°λ₯Έ μ½λμ μ€ν μ¬λΆλ₯Ό κ²°μ ν μ μλ€. βμ‘°κ±΄μ΄ μ°ΈμΌ λ ν΄λΉ μ½λ λΈλ‘μ μ€ννλ©°, μ‘°κ±΄μ΄ κ±°μ§μΌ λλ μ€ννμ§ μλλ€.βλ‘ μ΄ν΄ν μ μλ€.
projects λλ ν 리μ branchesλΌλ μ νλ‘μ νΈλ₯Ό μμ±νκ³ , if ννμμ μ΄ν΄λ³΄μ. src/main.rs νμΌμ λ€μ λ΄μ©μ μμ±ν΄λ³΄μ.
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
8
9
fn main() {
let number = 3;
if number < 5 {
println!("쑰건μ trueμ΄λ€.");
} else {
println!("쑰건μ falseμ΄λ€.");
}
}
if
ννμμ νμ if
ν€μλλ‘ μμνλ©°, κ·Έ λ€μ μ‘°κ±΄μ΄ λ°λΌμ¨λ€. μλ₯Ό λ€μ΄, μμ μμ μμλ number
λ³μκ° 5λ³΄λ€ μμμ§ νμΈνλ 쑰건μ μ¬μ©νλ€. μ‘°κ±΄μ΄ true
μΌ λ μ€νλλ μ½λ λΈλ‘μ 쑰건 λ€μ μ€κ΄νΈ λ΄μ μμΉνλ€. if
ννμμ μ΄λ¬ν μ½λ λΈλ‘μ λΆκΈ°(arms)λΌ λΆλ₯Έλ€. μ΄λ μμ μ λ€λ€λ match
ννμμ λΆκΈ°μ κ΄λ ¨μ΄ μλ€.
μ‘°κ±΄μ΄ false
μΌ κ²½μ° μ€νλ μ½λλ else
ννμμΌλ‘ μμ±ν μ μλ€. else
ννμμ μμ±νμ§ μμ κ²½μ°, μ‘°κ±΄μ΄ false
μ΄λ©΄ if
λΈλ‘μ 건λλ°κ³ , λ€μ μ½λλ‘ μ΄λνλ€.
μ μ½λλ₯Ό μ€ννλ©΄, μλμ κ°μ κ²°κ³Όκ° μΆλ ₯λλ€:
1
2
3
4
5
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Running `target/debug/branches`
쑰건μ trueμ΄λ€.
λ³μ number
μ κ°μ λ³κ²½νμ¬ μ‘°κ±΄μ΄ false
μΌ λ μ΄λ€ λ°μμ΄ λνλλμ§ νμΈν΄λ³΄μ.
1
let number = 7;
μ½λλ₯Ό λ³κ²½ν ν, νλ‘κ·Έλ¨μ λ€μ μ€ννλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όλ₯Ό νμΈν μ μλ€:
1
2
3
4
5
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Running 'target/debug/branches'
쑰건μ falseμ΄λ€.
쑰건문μ 쑰건μ λ°λμ λΆλ¦¬μΈ νμ
(bool
)μ΄μ΄μΌ νλ€. λΆλ¦¬μΈ νμ
μ΄ μλ κ°μΌλ‘ 쑰건μ μ€μ νλ©΄ μλ¬κ° λ°μνλ€. μλ μ½λλ₯Ό 보면 λ μ μ΄ν΄ν μ μλ€:
νμΌλͺ : src/main.rs
μλ μ½λλ μ»΄νμΌλμ§ μλλ€.
1
2
3
4
5
6
7
fn main() {
let number = 3;
if number {
println!("numberλ 3μ΄λ€.");
}
}
μ μ½λμμλ if
μ‘°κ±΄μ΄ 3
μ κ°μΌλ‘ νκ°λμκ³ , Rustμμλ μλ¬λ₯Ό λ°ννλ€:
1
2
3
4
5
6
7
8
9
10
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
error[E0308]: mismatched types
--> *src/main.rs*:4:8
|
4 | if number {
| ^^^^^^ expected `bool`, found integer
For more information about this error, try `rustc --explain E0308`.
error: could not compile `branches` due to previous error
μλ¬ λ©μμ§λ Rustκ° bool
κ°μ κΈ°λνμμ§λ§ μ μ κ°μ λ°μλ€λ κ²μ λνλΈλ€. Rubyλ JavaScriptμ κ°μ μΈμ΄λ€μ λΆλ¦¬μΈμ΄ μλ νμ
μ μλμΌλ‘ λΆλ¦¬μΈ κ°μΌλ‘ λ³ννμ§λ§, Rustμμλ κ·Έλ κ² νμ§ μλλ€. λ°λΌμ if
λ¬Έμμλ λ°λμ λΆλ¦¬μΈ κ°μ 쑰건μΌλ‘ μ¬μ©ν΄μΌ νλ€. μ¦, μ«μκ° 0
μ΄ μλ κ²½μ°μλ§ if
μ½λ λΈλ‘μ΄ μ€νλκ² νλ €λ©΄, if
ννμμ μλμ κ°μ΄ μμ ν΄μΌ νλ€:
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
fn main() {
let number = 3;
if number != 0 {
println!("numberλ 0μ΄ μλλ€.");
}
}
μ΄ μ½λλ₯Ό μ€ννλ©΄ numberλ 0μ΄ μλλ€.
κ° μΆλ ₯λλ€.
else ifλ₯Ό νμ©ν λ€μ€ 쑰건 μ²λ¦¬
else if
ννμμ μ¬μ©νλ©΄ μ¬λ¬ 쑰건μ μ²λ¦¬ν μ μλ€. μλ μμ λ₯Ό ν΅ν΄ νμΈν΄λ³΄μ:
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
fn main() {
let number = 6;
if number % 4 == 0 {
println!("numberλ 4λ‘ λλμ΄ λ¨μ΄μ§λ€");
} else if number % 3 == 0 {
println!("numberλ 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ€");
} else if number % 2 == 0 {
println!("numberλ 2λ‘ λλμ΄ λ¨μ΄μ§λ€");
} else {
println!("numberλ 4, 3, 2λ‘ λλμ΄ λ¨μ΄μ§μ§ μλλ€");
}
}
μ νλ‘κ·Έλ¨μ λ€ κ°μ§μ κ²½λ‘λ₯Ό κ°μ§λ€. μ΄λ₯Ό μ€ννλ©΄ λ€μκ³Ό κ°μ κ²°κ³Όκ° μΆλ ₯λλ€:
1
2
3
4
5
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
Finished dev [unoptimized + debuginfo] target(s) in 0.31s
Running 'target/debug/branches'
numberλ 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ€
νλ‘κ·Έλ¨μ κ° if
ννμμ μμλλ‘ κ²μ¬νκ³ , true
μΈ μ²« λ²μ§Έ 쑰건μ μ½λ λΈλ‘μ μ€ννλ€. μ¬κΈ°μ 6μ 2λ‘ λλμ΄ λ¨μ΄μ§μ§λ§ numberλ 2λ‘ λλμ΄ λ¨μ΄μ§λ€
λ λ©μμ§λ μΆλ ₯λμ§ μλλ€. μ΄λ Rustκ° true
μΈ μ²« λ²μ§Έ 쑰건μ λ§λλ©΄ μ΄ν 쑰건λ€μ νμΈνμ§ μκΈ° λλ¬Έμ΄λ€.
λ€μμ else if
쑰건 μ¬μ©μ μ½λμ 볡μ‘μ±μ μ¦κ°μν¬ μ μλ€. μ¬λ¬ 쑰건λ€μ΄ μ‘΄μ¬ν λλ μ½λλ₯Ό 리ν©ν°λ§ν΄μΌ νλ€. μΆνμ Rustκ° μ 곡νλ κ°λ ₯ν λΆκΈ° μ²λ¦¬ λκ΅¬μΈ match
μ λν΄ μμλ³Ό κ²μ΄λ€.
let λ¬Έμμ if μ¬μ©νκΈ°
if
λ ννμμ΄λ―λ‘, let
λ¬Έμ μ€λ₯Έμͺ½μλ μ¬μ©ν μ μλ€. μ¦, if
ννμμ ν΅ν΄ λ³μμ κ²°κ³Ό κ°μ ν λΉν μ μλ€. μλ μ½λμμ μμλ₯Ό νμΈν μ μλ€.
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
8
// if ννμμ κ²°κ³Όλ₯Ό λ³μμ ν λΉνκΈ°
fn main() {
let condition = true;
let number = if condition { 5 } else { 6 };
println!("numberμ κ°μ: {number}μ΄λ€.");
}
μ μ½λμμ number
λ³μλ if
ννμμ κ²°κ³Όμ λ°λΌ κ°μ΄ ν λΉλλ€.
1
2
3
4
5
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
Finished dev [unoptimized + debuginfo] target(s) in 0.30s
Running `target/debug/branches`
numberμ κ°μ: 5μ΄λ€.
μ½λ λΈλ‘μ λ΄λΆμ λ§μ§λ§ ννμμΌλ‘ νκ°λκΈ° λλ¬Έμ, if
ννμ μ 체μ κ°μ ν΄λΉ λΈλ‘μ μ€ν κ²°κ³Όμ λ°λΌ κ²°μ λλ€. μ΄λ¬ν μ΄μ λ‘ if
λ¬Έμ κ° λΆκΈ° κ²°κ³Όλ κ°μ νμ
μ΄μ΄μΌ νλ€. νμ
μ΄ μλ‘ λ€λ₯Ό κ²½μ°, μλ¬κ° λ°μνλ€.
μλ μ½λλ μ»΄νμΌλμ§ μλλ€.
1
2
3
4
5
6
fn main() {
let condition = true;
let number = if condition { 5 } else { "six" };
println!("numberμ κ°μ: {number}μ΄λ€.");
}
μ μ½λλ₯Ό μ»΄νμΌνλ €κ³ μλνλ©΄, if
μ else
μ λ°ν νμ
μ΄ μλ‘ νΈνλμ§ μμ μλ¬κ° λ°μνλ€.
1
2
3
4
5
6
7
8
9
10
11
12
$ cargo run
Compiling branches v0.1.0 (file:///projects/branches)
error[E0308]: `if`μ `else`μ νμ
μ΄ νΈνλμ§ μλλ€.
--> *src/main.rs*:4:44
|
4 | let number = if condition { 5 } else { "six" };
| - ^^^^^ μ μλ₯Ό μμνμΌλ `&str` νμ
λ°κ²¬
| |
| μ΄ λΆλΆ λλ¬Έμ λ°μν λ¬Έμ
μλ¬μ λν μμΈν μ 보λ `rustc --explain E0308`λ₯Ό ν΅ν΄ νμΈν μ μλ€.
error: μ΄μ μλ¬λ‘ μΈν΄ `branches` μ»΄νμΌμ μ€ν¨νλ€.
if
λ¬Έμ ννμμ μ μ κ°μΌλ‘, else
λ¬Έμ ννμμ λ¬Έμμ΄ κ°μΌλ‘ νκ°λλ€. λ³μλ νμ λͺ
νν νμ
μ κ°μ§λ©°, κ·Έ νμ
μ μ»΄νμΌ μκ°μ νμ λμ΄μΌ νλ€. λ³μλ λ¨μΌ νμ
μ κ°μ ΈμΌ νλ―λ‘ μ΄λ¬ν νΌν© νμ
μ νμ©λμ§ μλλ€.
Rustλ μ»΄νμΌ μκ°μ number
λ³μμ νμ
μ νμ€ν μμμΌ νλ€. number
μ νμ
μ ν΅ν΄ μ»΄νμΌλ¬λ μ½λ μ 체μμ ν΄λΉ νμ
μ΄ μ¬λ°λ₯΄κ² μ¬μ©λμλμ§ κ²μ¦νλ€. λ§μ½ number
μ νμ
κ²°μ μ΄ λ°νμμ μ΄λ£¨μ΄μ§λ€λ©΄, Rustλ κ·Έκ²μ μ²λ¦¬νλλ° μ΄λ €μμ κ²ͺκ² λλ€. μ΄ κ²½μ°, μ»΄νμΌλ¬λ λ 볡μ‘ν μν©μ μ²νκ² λλ©°, μ¬λ¬ κ°μ νμ
μ μΆμ ν΄μΌ νλ―λ‘ μ½λμ λν 보μ₯λ μ€μ΄λ€κ² λλ€.
λ°λ³΅λ¬Έμ μ¬μ©ν λ°λ³΅
μ½λ λΈλ‘μ μ¬λ¬ λ² μ€νν νμκ° μλ€. μ΄ μμ μ μν΄ Rustλ λ°λ³΅λ¬Έμ μ 곡νλ€. λ°λ³΅λ¬Έμ μ½λμ λ§μ§λ§κΉμ§ μ€νν λ€μ, μ²μλΆν° λ€μ μμνλ€. λ°λ³΅λ¬Έμ λν΄ μμ보기 μν΄ loopsλΌλ μ νλ‘μ νΈλ₯Ό λ§λ€μ΄λ³΄μ.
Rustμλ μ΄ μΈ μ’
λ₯μ λ°λ³΅λ¬Έ, loop
, while
, for
μ μ 곡νλ€. κ°κ°μ λν΄ μμ보μ.
loopλ₯Ό μ΄μ©ν μ½λμ λ°λ³΅
loop
ν€μλλ Rustμκ² μ½λ λΈλ‘μ 무νν λ°λ³΅ μ€ννλλ‘ μ§μνλ€. μ΄λ κ°λ°μκ° λͺ
μμ μΌλ‘ μ€μ§νκΈ° μ κΉμ§ κ³μ λ°λ³΅λλ€.
loops λλ ν 리 λ΄μ src/main.rs νμΌμ λ€μκ³Ό κ°μ΄ λ³κ²½ν΄λ³΄μ:
νμΌλͺ : src/main.rs
1
2
3
4
5
fn main() {
loop {
println!("again!");
}
}
μ΄ νλ‘κ·Έλ¨μ μ€ννλ©΄, κ°λ°μκ° νλ‘κ·Έλ¨μ μλμΌλ‘ μ€μ§νκΈ° μ κΉμ§ κ³μν΄μ again!
μ΄ μΆλ ₯λλ€. λλΆλΆμ ν°λ―Έλμ ν€λ³΄λ λ¨μΆν€ ctrl-cλ₯Ό μ¬μ©νμ¬ μ°μμ μΈ λ°λ³΅λ¬Έμ λ©μΆ μ μλ€.
1
2
3
4
5
6
7
8
9
$ cargo run
Compiling loops v0.1.0 (file:///projects/loops)
Finished dev [unoptimized + debuginfo] target(s) in 0.29s
Running `target/debug/loops`
again!
again!
again!
again!
^Cagain!
μ¬κΈ°μ ^C
λ ctrl-cλ₯Ό λλ₯Έ μμΉλ₯Ό λνλΈλ€. ctrl-c μ΄νμ again!
μ΄ μΆλ ₯λλμ§λ μ€λ¨ λͺ
λ Ήμ λ°μμ λμ λ°λ³΅λ¬Έμ μμΉμ λ°λΌ λ€λ₯Ό μ μλ€.
λ¬Όλ‘ , Rustλ μ½λλ₯Ό μ΄μ©νμ¬ λ°λ³΅λ¬Έμ μ€λ¨νλ λ°©λ²λ μ 곡νλ€. break
ν€μλλ₯Ό λ°λ³΅λ¬Έ λ΄μ λ£μ΄μ νλ‘κ·Έλ¨μ μΈμ λ°λ³΅λ¬Έ μ€νμ μ€μ§ν μ§ μ릴 μ μλ€. μ΄μ μ νμ΅νλ βμ«μ λ§μΆκΈ° κ²μβ μΉμ
μμ, μ¬μ©μκ° μ νν μ«μλ₯Ό λ§μΆ° κ²μμμ μ΄κ²Όμ λ νλ‘κ·Έλ¨μ μ’
λ£νκΈ° μν΄ μ΄ λ°©λ²μ μ¬μ©νμλ€.
λν, μ°λ¦¬λ μ΄μ μ continue
λ₯Ό μ¬μ©νλλ°, μ°λ¦¬λ continue
λ‘ λ°λ³΅λ¬Έμμ λ¨μ μ½λλ₯Ό 건λλ°κ³ λ€μ λ°λ³΅μΌλ‘ λ°λ‘ λμ΄κ°λλ‘ νλ‘κ·Έλ¨μ μ§μν μ μμλ€.
loopλ₯Ό ν΅ν κ° λ°ν
loop
λ κ°λ μ€ν¨ κ°λ₯μ±μ΄ μλ μμ
μ μ¬μλνκΈ° μν΄ μ¬μ©λλ€(μμ: μ€λ λκ° μμ
μ λͺ¨λ λ§μ³€λμ§ νμΈ). κ·Έλ¦¬κ³ μ΄λ¬ν μμ
μ κ²°κ³Όλ₯Ό loop
λ°κΉ₯ μ½λλ‘ μ λ¬ν΄μΌ ν λλ μλ€. κ·Έλ΄ λλ, loop
λ₯Ό λ©μΆλ break
ννμ λ€μ λ°νν κ°μ μ§μ νλ©΄, ν΄λΉ κ°μ loop
μμ λ°νλμ΄ μ¬μ©λ μ μλ€. λ€μμ κ·Έλ° λ°©μμ 보μ¬μ£Όλ μμμ΄λ€:
1
2
3
4
5
6
7
8
9
10
11
12
13
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("κ²°κ³Όλ: {result}");
}
loop
μμ μ μ counter
λΌλ λ³μλ₯Ό μ μΈνλ©° 0
μΌλ‘ μ΄κΈ°ννλ€. κ·Έ ν, loop
μ λ°ν κ°μ μ μ₯ν result
λ³μλ₯Ό μ μΈνλ€. loop
λ΄μμλ counter
λ³μμ 1
μ κ³μ λνλ€κ° counter
κ° 10
μ΄ λλ©΄, counter * 2
κ°κ³Ό break
λ₯Ό μ¬μ©ν΄ loop
λ₯Ό μ’
λ£νλ€. κ·Έ λ€μμ result
μ μ μ₯λ κ°μ μΆλ ₯νλ€. μ΄ κ²½μ° μΆλ ₯ κ°μ΄ 20
μ΄ λλ κ²μ νμΈν μ μλ€.
λ€μ€ λ°λ³΅λ¬Έμμ 루ν λ μ΄λΈ νμ©
μ€μ²©λ λ°λ³΅λ¬Έμ΄ μμ λ, break
μ continue
λ κΈ°λ³Έμ μΌλ‘ κ°μ₯ λ΄λΆμ λ°λ³΅λ¬Έμλ§ μν₯μ μ€λ€. λ§μ½ νΉμ μΈλΆμ λ°λ³΅λ¬Έμ λν΄μ break
λ continue
λ₯Ό μ μ©νκ³ μΆλ€λ©΄, 루ν λ μ΄λΈμ μ¬μ©ν μ μλ€. 루ν λ μ΄λΈμ μμ λ°μ΄ν('
)λ‘ μμνλ€. μλμ μ€μ²©λ λ°λ³΅λ¬Έμ μ¬μ©ν μμλ₯Ό 보μ¬μ€λ€:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fn main() {
let mut count = 0;
'counting_up: loop {
println!("count = {count}");
let mut remaining = 10;
loop {
println!("remaining = {remaining}");
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up;
}
remaining -= 1;
}
count += 1;
}
println!("μ΅μ’
count = {count}");
}
μΈλΆ 루νμλ counting_up
μ΄λΌλ 루ν λ μ΄λΈμ΄ λΆμ΄μμΌλ©°, 0μμ 2κΉμ§ μ¦κ°νλ€. 루ν λ μ΄λΈμ΄ μλ λ΄λΆ 루νλ 10μμ 9κΉμ§ κ°μνλ€. λ μ΄λΈμ μ§μ νμ§ μμ 첫 λ²μ§Έ break
λ λ΄λΆ 루νλ§μ μ’
λ£νλ€. λ°λ©΄ break 'counting_up;
λ μΈλΆ 루νλ₯Ό μ’
λ£νλ€. μ€ν κ²°κ³Όλ λ€μκ³Ό κ°λ€:
1
2
3
4
5
6
7
8
9
count = 0
remaining = 10
remaining = 9
count = 1
remaining = 10
remaining = 9
count = 2
remaining = 10
μ΅μ’
count = 2
whileμ νμ©ν μ‘°κ±΄λΆ λ°λ³΅λ¬Έ
νλ‘κ·Έλ¨μμλ μ’
μ’
λ°λ³΅λ¬Έ λ΄λΆμμ 쑰건μ κ²μ¬ν νμκ° μλ€. μ‘°κ±΄μ΄ true
μΈ κ²½μ° λ°λ³΅λ¬Έμ΄ μ€νλλ©°, μ‘°κ±΄μ΄ false
μ΄ λ λ λ°λ³΅λ¬Έμ΄ λ©μΆλ€. μ΄λ° λμμ loop
, if
, else
, break
λ₯Ό μ‘°ν©νμ¬ κ΅¬νν μ μλ€.
νμ§λ§ μ΄λ¬ν μ‘°κ±΄λΆ λ°λ³΅ ν¨ν΄μ Rustμμ μμ£Ό μ¬μ©λκΈ° λλ¬Έμ, Rustλ while
루νλ₯Ό μ 곡νλ€. μλ μμ μμλ while
루νλ₯Ό μ¬μ©νμ¬ μ‘°κ±΄μ΄ true
μΈ λμ μΈ λ² λ°λ³΅νκ³ , κ° λ°λ³΅λ§λ€ μΉ΄μ΄νΈλ€μ΄ν ν, λ°λ³΅λ¬Έμ΄ μ’
λ£λλ©΄ λ©μμ§λ₯Ό μΆλ ₯νλ€.
1
2
3
4
5
6
7
8
9
10
11
12
13
// μ‘°κ±΄μ΄ trueμΈ λμ μ½λλ₯Ό μ€ννκΈ° μν΄ while 루ν μ¬μ©
fn main() {
let mut number = 3;
while number != 0 {
println!("{number}!");
number -= 1;
}
println!("LIFTOFF!!!");
}
μ΄λ° λ°©μμΌλ‘ ꡬμ±νλ©΄ loop
, if
, else
, break
λ₯Ό μ¬μ©ν λ λ°μν μ μλ 볡μ‘ν μ€μ²© ꡬ쑰λ₯Ό νΌν μ μμΌλ©°, μ½λμ κ°λ
μ±λ λμμ§λ€. μ‘°κ±΄μ΄ true
μ΄λ©΄ μ½λκ° μ€νλκ³ , false
μ΄λ©΄ 루νμμ λ²μ΄λλ€.
forλ‘ μ»¬λ μ λ°λ³΅
컬λ μ
μ μμλ₯Ό λ°λ³΅ν λ, while
ꡬ쑰λ₯Ό μ ννμ¬ μ¬μ©ν μ μλ€. μλ₯Ό λ€λ©΄, μλμ 루νλ λ°°μ΄ a
μ κ° μμλ₯Ό μΆλ ₯νλ€.
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
8
9
10
11
12
// while 루νλ₯Ό μ¬μ©νμ¬ μ»¬λ μ
μ κ° μμλ₯Ό λ°λ³΅
fn main() {
let a = [10, 20, 30, 40, 50];
let mut index = 0;
while index < 5 {
println!("μ΄ κ°μ: {}", a[index]);
index += 1;
}
}
μ΄ μ½λμμλ λ°°μ΄μ κ° μμμ μ κ·ΌνκΈ° μν΄ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ μννλ€. μΈλ±μ€λ 0
λΆν° μμνκ³ , λ°°μ΄μ λ§μ§λ§ μμμ λλ¬ν λκΉμ§ κ³μ 루νλ₯Ό μ€ννλ€(μ¦, index < 5
μ‘°κ±΄μ΄ false
κ° λ λκΉμ§). μ΄ μ½λλ₯Ό μ€ννλ©΄, λ°°μ΄μ μλ λͺ¨λ μμλ€μ΄ μΆλ ₯λλ€.
1
2
3
4
5
6
7
8
9
$ cargo run
Compiling loops v0.1.0 (file:///projects/loops)
Finished dev [unoptimized + debuginfo] target(s) in 0.32s
Running `target/debug/loops`
μ΄ κ°μ: 10
μ΄ κ°μ: 20
μ΄ κ°μ: 30
μ΄ κ°μ: 40
μ΄ κ°μ: 50
λ°°μ΄μ λͺ¨λ κ°μ ν°λ―Έλμ μΆλ ₯ν΄λ³Έ κ²°κ³Ό, μμλλ‘ λ€μ― κ°μ κ°μ΄ λͺ¨λ λνλ¬λ€. κ·Έλ¬λ index
κ° μ΄λ μμ μμλ 5
μ λλ¬νλ©΄, 루νλ λ°°μ΄μ μ¬μ― λ²μ§Έ κ°μ μ°ΎκΈ° μ μ μ’
λ£λλ€.
νμ§λ§, μ΄ λ°©μμ μλ¬λ₯Ό λ§λ€κΈ° μ½λ€. λ§μ½ μΈλ±μ€μ κ°μ΄λ 쑰건μμ μ€μκ° μμΌλ©΄ νλ‘κ·Έλ¨μμ ν¨λ μνκ° λ°μν μ μλ€. μλ₯Ό λ€μ΄, λ°°μ΄ a
μ ν¬κΈ°λ₯Ό λ€ κ°μ μμλ‘ μ€μμ λ, 쑰건μμ while index < 4
λ‘ μμ νλ κ²μ μμ΄λ²λ¦°λ€λ©΄, μ½λλ ν¨λ μνλ₯Ό μΌμΌν¬ κ²μ΄λ€. λν μ΄ λ°©μμ μλμ μΌλ‘ λ릴 μ μλ€. μ»΄νμΌλ¬λ 루νμ κ° λ°λ³΅λ§λ€ λ°°μ΄μ λ²μ λ΄μμ μΈλ±μ€κ° μ ν¨νμ§ νμΈνκΈ° μν΄ μ‘°κ±΄μ κ²μ¬νκΈ° λλ¬Έμ΄λ€.
λ κ°κ²°νκ³ μμ μ μΈ λ°©λ²μΌλ‘λ for
루νλ₯Ό μ¬μ©νμ¬ μ»¬λ μ
μ κ° μμλ₯Ό μννλ κ²μ΄λ€. for
루νλ μμ μ μλ μ½λλ³΄λ€ ν¨μ¬ μ§κ΄μ μΌλ‘ μμ±ν μ μλ€.
νμΌλͺ : src/main.rs
1
2
3
4
5
6
7
8
9
// for 루νλ₯Ό μ¬μ©νμ¬ μ»¬λ μ
μ κ° μμλ₯Ό λ°λ³΅νκΈ°
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a {
println!("μ΄ κ°μ: {element}");
}
}
μ΄ μ½λλ₯Ό μ€ννλ©΄ μ΄μ μ μ½λμ λμΌν μΆλ ₯ κ²°κ³Όλ₯Ό νμΈν μ μλ€. 무μ보λ€λ, μ΄ λ°©λ²μ μ½λμ μμ μ±μ ν₯μμν€λ©°, λ°°μ΄μ λ²μλ₯Ό λμ΄μκ±°λ νλͺ©μ λμΉ κ°λ₯μ±μ μ€μΈλ€.
for
루νλ₯Ό νμ©νλ©΄, λ°°μ΄μ κ°μ΄ λ³κ²½λλλΌλ λ€λ₯Έ λΆλΆμ μ½λλ₯Ό μμ ν νμκ° μλ€. μ΄λ¬ν μ₯μ (μμ μ±κ³Ό κ°κ²°μ±)μΌλ‘ μΈν΄ for
루νλ Rustμμ κ°μ₯ μμ£Ό μ¬μ©λλ λ°λ³΅λ¬Έμ΄λ€.
λν, νΉμ νμλ§νΌ μ½λλ₯Ό λ°λ³΅ μ€ννλ €λ κ²½μ°μλ for
루νκ° κΆμ₯λλ€. μλ₯Ό λ€λ©΄, μ«μμ λ²μλ₯Ό μμ±νλ νμ€ λΌμ΄λΈλ¬λ¦¬μΈ Range
λ₯Ό μ¬μ©ν μ μλ€.
μλ μ½λλ for
루νμ rev
λ°©λ²μ νμ©ν μΉ΄μ΄νΈλ€μ΄μ μλ₯Ό 보μ¬μ€λ€.
νμΌλͺ : src/main.rs
1
2
3
4
5
6
fn main() {
for number in (1..4).rev() {
println!("{number}!");
}
println!("LIFTOFF!!!");
}
μ΄ μ½λλ λ κ°κ²°νκ³ λͺ ννλ€.
μ 리
μ°λ¦¬λ μ§κΈκΉμ§ λ³μ, μ€μΉΌλΌ λ° λ³΅ν© μλ£ν, ν¨μ, μ£Όμ, if
ννμ, κ·Έλ¦¬κ³ λ°λ³΅λ¬Έμ λνμ¬ λ°°μ λ€. μ΄λ² μΉμ
μμ λ°°μ΄ λ΄μ©μ νμ©νμ¬ λ€μκ³Ό κ°μ νλ‘κ·Έλ¨μ λ§λ€μ΄ 보λ κ²μ μΆμ²νλ€:
- νμ¨μ μμ¨ κ°μ μ¨λλ₯Ό λ³ννλ νλ‘κ·Έλ¨
- nλ²μ§Έ νΌλ³΄λμΉ μλ₯Ό ꡬνλ νλ‘κ·Έλ¨
- βThe Twelve Days of Christmasβ ν¬λ¦¬μ€λ§μ€ μΊλ‘€μ κ°μ¬λ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨, μ΄λ λ Έλμ λ°λ³΅ λΆλΆμ μ νμ©ν΄λ³΄μ.
λ€μ μΉμ μμλ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μλ νν μ‘΄μ¬νμ§ μλ μμ κΆμ΄λΌλ κ°λ μ λ°°μΈ μμ μ΄λ€.
μΆμ²: rust-lang book