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 | 
                            Tags
                            
                        
                          
                          - JPA
 - framework
 - database
 - Spring
 - 애자일프로그래밍
 - Elasticsearch
 - 개발자
 - 엘라스틱서치
 - API
 - 스프링
 - 개발
 - 읽기쉬운코드
 - 알고리즘
 - 코딩테스트
 - 클린코드
 - 코딩
 - kotlin
 - 백준
 - Java
 - Baekjoon
 - 그리디알고리즘
 - 데이터베이스
 - 코드
 - 자바
 - cleancode
 - 프레임워크
 - 애자일기법
 - ES
 - spring boot
 - 그리디
 
                            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 (1) | 2019.03.31 | 
|---|---|
| 러스트 18 - Collections #1 : Vector (0) | 2019.03.31 | 
| 러스트 16 - 열거형 #2 (1) | 2019.03.24 | 
| 러스트 15 - 열거형 #1 (1) | 2019.03.24 | 
| 러스트 14 - 구조체 #2 : 메소드 (0) | 2019.03.10 |