Rust if...else
if를 쓰면 프로그램이 결정을 내릴 수 있어요. 조건에 따라 이 코드 블록을 실행할지, 저 코드 블록을 실행할지 고르는 거예요.
기본 if
섹션 제목: “기본 if”fn main() { let age = 20;
if age >= 18 { println!("투표할 수 있어요"); }}다른 언어를 쓰다 온 분들이 자주 걸려 넘어지는 부분이 두 가지 있어요.
- 조건을 괄호로 감싸지 않아요.
if (age >= 18)이 아니라if age >= 18이에요. - 조건은 반드시 진짜
bool이어야 해요.if age(숫자)는 컴파일되지 않아요.if age != 0처럼 써야 해요.
if / else
섹션 제목: “if / else”fn main() { let age = 15;
if age >= 18 { println!("투표할 수 있어요"); } else { println!("아직 나이가 부족해요"); }}분기를 더 만드는 else if
섹션 제목: “분기를 더 만드는 else if”fn main() { let score = 72;
if score >= 90 { println!("학점: A"); } else if score >= 75 { println!("학점: B"); } else if score >= 60 { println!("학점: C"); } else { println!("학점: F"); }}예상대로 Rust는 위에서부터 차례로 조건을 확인하고, 처음으로 맞는 조건의 블록을 실행해요.
if를 식으로 사용하기
섹션 제목: “if를 식으로 사용하기”많은 언어에는 없지만 Rust에는 있는 기능이 있어요. 바로 if가 값을 만들어 낼 수 있다는 거예요. 그래서 let의 오른쪽에 if를 쓸 수 있어요.
fn main() { let age = 20; let status = if age >= 18 { "성인" } else { "미성년자" };
println!("{status}");}함수에서 값을 반환할 때와 똑같은 방식이에요. 각 분기의 값 뒤에는 세미콜론을 붙이지 않아요. 지켜야 할 조건은 하나뿐이에요. 두 분기 모두 같은 타입의 값을 만들어야 해요(여기서는 둘 다 &str이에요).
중첩 대신 조건 조합하기
섹션 제목: “중첩 대신 조건 조합하기”if 안에 또 다른 if를 넣을 수도 있어요. 잘 동작하지만, 두세 단계만 깊어져도 읽기가 어려워져요. 이럴 때는 논리 연산자 &&(그리고)와 ||(또는)로 조건을 이어 붙이는 방법이 있어요.
fn main() { let temperature = 22; let is_raining = false;
// 중첩: 동작은 하지만 코드가 점점 오른쪽으로 밀려나요 if temperature > 15 { if !is_raining { println!("중첩: 산책하러 가요"); } }
// 같은 검사를 조건 하나로 if temperature > 15 && !is_raining { println!("조합: 산책하러 가요"); }
// ||는 둘 중 하나만 참이어도 참이에요 if temperature < 0 || temperature > 35 { println!("집에 있어요"); } else { println!("날씨가 좋아요"); }}실행 결과:
중첩: 산책하러 가요조합: 산책하러 가요날씨가 좋아요안쪽 블록이 추가로 하는 일이 있거나 안쪽에 자기만의 else가 있다면 중첩도 여전히 괜찮아요. 하지만 바깥 if가 안쪽 if를 지켜 주는 역할만 한다면, &&로 같은 뜻을 더 간단하게 표현할 수 있어요. 숫자가 어떤 범위 안에 있는지 확인하려면 temperature >= 15 && temperature <= 25라고 쓰세요. Rust에서는 15 <= temperature <= 25라고 쓸 수 없어요.
연습 문제
섹션 제목: “연습 문제”1. 짝수일까, 홀수일까
섹션 제목: “1. 짝수일까, 홀수일까”숫자 n = 7을 저장하세요. if를 식으로 써서 변수 kind에 "짝수" 또는 "홀수"를 넣고, 7은 홀수예요를 출력하세요. 힌트: n % 2 == 0이면 짝수예요.
정답 보기
fn main() { let n = 7; let kind = if n % 2 == 0 { "짝수" } else { "홀수" }; println!("{n}은 {kind}예요");}실행 결과:
7은 홀수예요2. 영화표 가격
섹션 제목: “2. 영화표 가격”어떤 영화관은 12세 미만 어린이에게 5달러, 65세 이상에게 7달러, 그 밖의 모든 사람에게 12달러를 받아요. age에 70을 저장하고, if / else if / else 식 하나로 price를 계산해서 티켓: 7달러를 출력하세요. 힌트: 모든 분기가 숫자를 돌려줘야 하고, 전체 if 식은 마지막 } 뒤에 세미콜론으로 끝나요.
정답 보기
fn main() { let age = 70;
let price = if age < 12 { 5 } else if age >= 65 { 7 } else { 12 };
println!("티켓: {price}달러");}실행 결과:
티켓: 7달러if 조건 { ... }에는 괄호가 필요 없고, 조건은bool이어야 해요.else if로 검사를 더 이어 붙이고,else로 나머지 경우를 처리해요.if안에if를 중첩하는 대신&&와||로 조건을 이어 붙일 수 있어요.if는 값을 만드는 식으로 쓸 수 있어요. 두 분기의 타입이 같아야 하고,else가 꼭 있어야 해요.
이해도 점검
섹션 제목: “이해도 점검”이해도 점검
1. Rust의 if 조건에 꼭 필요한 것은 무엇인가요?
2. let과 함께 if를 식으로 쓸 때, 두 분기가 지켜야 할 것은 무엇인가요?
점수: 0 / 2
더 알아보기
섹션 제목: “더 알아보기”- 제어 흐름문 - The Rust Programming Language 한국어판:
if,else if, 그리고let에서if를 쓰는 방법을 차근차근 설명하는 공식 문서예요. - if/else - Rust by Example (영어): 분기가 값을 만들어 내는 모습을 실행 가능한 예제 하나로 보여 줘요.
- If expressions - The Rust Reference (영어): 세세한 부분까지 알고 싶을 때 볼 수 있는 정확한 규칙이에요.
- Exercism의 Rust 트랙 (영어): 멘토링을 받을 수 있는 무료 연습 문제예요. 초반 문제들은
if와else를 많이 써요.