Using if let with Enum



match 가 너무 장황하게 느껴질 때, if let 은 보다 간단한 옵션이 됨.


let some_u8_value = Some(0u8);

match some_u8_value {
Some(3) => println!("three"),
_ => (),
}


위 match 는 아래 if let 과 동일하게 작동함.


if let Some(3) = some_u8_value {
println!("three");
}


else 도 가능.


if let Some(3) = some_u8_value {
println!("three");
} else {
println!("not three");
}


if let 은 match 와 비슷함. 그러나, 그 코드는 match 보다 짧고, 형식적인 코드가 보다 적음. 그리고 중요한 것: if let 은 비교 패턴을 원하는 대로 정할 수 있음. match 는 반드시 enum 타입의 모든 패턴을 다루어야 하지만, if let 은 그런 거 없음. 비교하고 싶은 패턴이 하나면 하나, 둘이면 둘, 원하는 대로 가능함. 비교하고 싶은 값이 적을 때는 확실히 if let 이 편할 것임. 그러나 여기에는 match 에서의 안정성이 없다는 것을 유념해야 함.




'Rust' 카테고리의 다른 글

모듈(pub)  (0) 2018.02.22
모듈  (0) 2018.02.22
Enum(match)  (0) 2018.02.21
Enum(Option<T>)  (0) 2018.02.21
Enum  (0) 2018.02.21

+ Recent posts