Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JPA
- ES
- 백준
- 개발
- framework
- Baekjoon
- 클린코드
- 스프링
- cleancode
- 애자일
- 애자일기법
- Java
- 자바
- database
- spring boot
- 엘라스틱서치
- 개발자
- 애자일프로그래밍
- 데이터베이스
- API
- 프레임워크
- Elasticsearch
- Spring
- 그리디
- 그리디알고리즘
- 알고리즘
- 읽기쉬운코드
- 코딩
- 코드
- 코딩테스트
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
러스트 17 - if let 본문
반응형
이번 장에서는 코드를 보다 간결하게 제어하기 위한 "if let"이라는 녀석을 알아본다.
if let 구문은 하나의 패턴과 일치하는 값을 처리하고 나머지는 무시할 수 있도록 해준다.
(간결한 이유 인가?라는 의문이 생긴다..)
"어떠한 옵션 값을 매칭 시켜, 그 값이 특정 값일 경우에만 코드를 실행시키고 싶다!"라고 한다면 내 생각에는 두 가지의 방법이 있을 수 있다.
지금 부터 간결하고도 간편한 방법. if let을 소개한다.
다음 코드를 보자
fn main() {
let var = 3;
let some_u8_value = Some(var);
// 첫 번째 방법
match some_u8_value {
Some(3) => println!("three"),
_ => (),
}
// 두 번째 방법
if let Some(3) = some_u8_value {
println!("three");
}
}
if let 구문은 표현식을 받는다. 작동 원리는 기본적으로 match와 동일하다.
(만약 var의 값이 바뀐다면 output이 없을 것이다.)
표현식은 match에 주어지고 패턴은 첫 arm과 같다.
match가 실행하는 철저한 checking은 실행되지 않는다.
단순하게 코드의 길이가 짧아져서 타이핑하는 횟수 혹은 시간이 줄어드는 것 보다, 표준 코드가 줄어드는 것이 큰 메리트 이지 않을까 싶다.
지금은 코드의 길이가 짧고 출력만 하고 있어서 크게 와 닿지는 않는다. 하지만 덩치가 커질 수록 첫 번째 방법 보다는 두 번째 방법을 선호하게 될 듯 싶다.
설마 했지만...else문도 포함 시킬 수 있더라....?ㄷㄷ
if let else는 match문에서 "_"와 동일한 역할을 하지.
다음 코드를 보자.
let mut count = 0;
// 첫 번째 방법
match coin {
Coin::Quarter(state) => println!("State quarter from {:?}!", state),
_ => count += 1,
}
// 두 번째 방법
if let Coin::Quarter(state) = coin {
println!("State quarter from {:?}!", state);
} else {
count += 1;
}
흔하게 사용하는 if의 syntax와 비슷하여 내심 다행이라고 생각이 된다...ㅎㅎㅎ
반응형
'프로그래밍 > RUST' 카테고리의 다른 글
러스트 19 - Collections #2 : Hash Map (0) | 2019.03.31 |
---|---|
러스트 18 - Collections #1 : Vector (0) | 2019.03.31 |
러스트 16 - 열거형 #2 (0) | 2019.03.24 |
러스트 15 - 열거형 #1 (0) | 2019.03.24 |
러스트 14 - 구조체 #2 : 메소드 (0) | 2019.03.10 |