이 시리즈는 Rust Book을 공부하고 정리한 문서입니다. 댓글로 많은 조언 부탁드립니다.
Rust Book: https://doc.rust-lang.org/book/
모든 범위 블록은 고유의 값을 리턴할수있다. 블록 내에서 ;
로 끝나지않은 표현식이 리턴 값이 된다.
if
는 표현식이다 값을 리턴 할 수 있음.
if 조건 {}
let number = 3;
if number < 5 {
println!("condition was true");
} else {
println!("condition was false");
}
let num = 3;
if num {
....
}
else if 는 다음과 같이 else if 조건 {}
. 첫번째 참인 조건을 만나면 나머지 else if 및 else는 조건을 체크하지도 않는다.
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");
}
}
표현식(Expression) 형식으로 let 구문에서도 if 사용해 바인딩 가능. 아래 5,6 에는 세미콜론이 없음에 유의.
let condition = true;
let number = if condition {
5
} else {
6
};
println!("The value of number is: {}", number);
만약 아래와같이 if 와 else 블럭이 서로다른 타입을 리턴하면 컴파일 타임에 에러가 발생한다.
let condition = true;
let number = if condition {
5
} else {
"six"
};
조건식 없는 반복문. loop 블럭과 break 로 탈출. 다른 반복문 for
, while
외에 loop
가 필요한 이유는 loop가 표현식이기 때문이다. 값을 리턴할 수 있다.
fn main() {
loop {
println!("again!");
break;
}
}
loop 표현식에서 값 리턴하기 break
이후에 나오는 값을 리턴할 수 있다. 세미콜론없는 표현식이 아니라 break 사용 유의.
break
로 값을 리턴하는것은 loop
에서만 사용 가능하다.
loop는 표현식이다 값을 리턴할 수 있다. break도 표현식이다. loop에 리턴값을 제공할 수 있다.
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
}
while 은 loop 와 다르게 조건식이 있어야 한다. while 조건 {}
fn main() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("LIFTOFF!!!");
}
for 변수 in 표현식
표현식 부분에 어떤 타입이 들어가는지 아직 애매. iterator가 올수 있다. 튜플은 안된다. (0..4) -> 0 1 2 3 까지 카운팅 되는 iterator(?)
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("the value is: {}", element);
}
}