match ํํ์
matchํค์๋๋ ์ด๋ค ๊ฐ์ ํ๋ ์ด์์ ํจํด์ ๋ํด ๋งค์นํ๋๋ฐ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฐ ๋ฉด์์ if let ํํ์์ ์ฌ๋ฌ๊ฐ ์ด์ด ๋์ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค:
fn main() { match std::env::args().next().as_deref() { Some("cat") => println!("Will do cat things"), Some("ls") => println!("Will ls some files"), Some("mv") => println!("Let's move some files"), Some("rm") => println!("Uh, dangerous!"), None => println!("Hmm, no program name?"), _ => println!("Unknown program name!"), } }
if let๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งค์น์ ๋ชจ๋ ํ(arm)์ ๊ฐ์ ํ์
์ด์ด์ผ ํฉ๋๋ค. ํ์ด ๋ธ๋ก์ด๋ผ๋ฉด ๋ธ๋ก์ ๋ง์ง๋ง ํํ์์ด ๊ทธ ํ์
์ด ๋ฉ๋๋ค. ์์ ์์ ์์ ๋งค์น ํํ์์ ํ์
์ ()์
๋๋ค.
ํจํด์ ๊ดํ ์ค๋ช ์ ํจํด ๋งค์นญ์ ์ฐธ์กฐํ์ธ์.
matchํํ์์ ๋ณ์์ ํ ๋นํ๊ณ ๊ทธ ๊ฐ์ ์ถ๋ ฅํด๋ณด์ธ์..as_deref()๋ฅผ ์ง์๋ณด๊ณ , ์ด ๋ ๋์ค๋ ์๋ฌ๋ฅผ ์ค๋ช ํด์ฃผ์ธ์.std::env::args().next()๋Option<String>๊ฐ์ ๋ฐํํ๋๋ฐ,String์ ์ง์ ๋งค์นํ ์ ์์ต๋๋ค.as_deref()๋Option<T>๋ฅผOption<&T::Target>์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค. ์ด ๊ฒฝ์ฐ๋Option<String>์์Option<&str>๋ก ๋ฐ๋๋๋ค.- ์ด์ ๋ ํจํด ๋งค์นญ์ผ๋ก
Option์์&str์ ๋งค์นํ ์ ์์ต๋๋ค.