if let
ํํ์
if let
ํํ์์ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ํจํด๊ณผ ์ผ์นํ๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค:
fn main() { let arg = std::env::args().next(); if let Some(value) = arg { println!("Program name: {value}"); } else { println!("Missing name?"); } }
ํจํด์ ๊ดํ ์ค๋ช ์ ํจํด ๋งค์นญ์ ์ฐธ์กฐํ์ธ์.
-
if let
์ดmatch
๋ณด๋ค ๋ ๊ฐ๊ฒฐํ ์ ์์ต๋๋ค(์: ํ๊ฐ์ง ๋ธ๋์น๋ง ํฅ๋ฏธ๋ก์ด ๊ฒฝ์ฐ). ์ด์ ๋ฌ๋ฆฌmatch
์์๋ ๋ชจ๋ ๋ธ๋์น๊ฐ ์ฒ๋ฆฌ๋์ด์ผ ํฉ๋๋ค. -
์ผ๋ฐ์ ์ฌ์ฉ๋ฒ์
Option
์ ์ฌ์ฉํ ๋Some
๊ฐ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค. -
match
์ ๋ฌ๋ฆฌif let
์ ํจํด ์ผ์น๋ฅผ ์ํ ๋ณดํธ ์ ์ ์ง์ํ์ง ์์ต๋๋ค. -
1.65๋ถํฐ ์ ์ฌํ let-else ๊ตฌ์ฑ์ ๋์คํธ๋ญ์ฒ๋ง ํ ๋น์ ์คํํ๊ฑฐ๋ ์คํจํ ๊ฒฝ์ฐ ๋ฐํ๋์ง ์๋ ๋ธ๋ก ๋ธ๋์น(panic/return/break/continue)๋ฅผ ๋ณด์ ํ๋๋ก ํ์ฉํฉ๋๋ค:
fn main() { println!("{:?}", second_word_to_upper("foo bar")); } fn second_word_to_upper(s: &str) -> Option<String> { let mut it = s.split(' '); let (Some(_), Some(item)) = (it.next(), it.next()) else { return None; }; Some(item.to_uppercase()) }