■ Option<T> 열거형과 match문을 사용하는 방법을 보여준다.
▶ 예제 코드 (RS)
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 32 |
fn print_bmi(height : f32, weight : Option<f32>) { let bmi_option : Option<f32> = match weight { Some(weight) => Some(weight / (height / 100.0).powf(2.0)), None => None }; let message_string_slice : &str = match bmi_option { Some(n) if n < 18.5 => "저체중", Some(n) if n < 23.0 => "정상", Some(n) if n < 25.0 => "비만전단계", Some(n) if n < 30.0 => "1단계 비만", Some(n) if n < 35.0 => "2단계 비만", Some(_) => "3단계 비만", None => "계산 불가" }; println!("BMI : {:.1}, 결과 : {}", bmi_option.unwrap(), message_string_slice); } fn main() { let height : f32 = 162.3; print_bmi(height, Some(48.0)); print_bmi(height, Some(72.3)); print_bmi(height, None ); } |