ํจํด ๋งค์นญ
match
ํค์๋๋ ๊ฐ์ ์ฌ๋ฌ ํํ์ ํจํด๊ณผ ๋งค์น์ํฌ ์ ์์ต๋๋ค. ๋งจ ์ ํจํด๋ถํฐ ํ๋์ฉ ๋งค์น๋๋์ง ๊ฒ์ฌํ๋ฉฐ, ์ฒ์์ผ๋ก ๋งค์น๋๋ ํจํด์ด ์ ํ๋ฉ๋๋ค.
C/C++์ switch
์ ๋น์ทํ๊ฒ ๊ฐ์ ํจํด์ผ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค:
fn main() { let input = 'x'; match input { 'q' => println!("Quitting"), 'a' | 's' | 'w' | 'd' => println!("Moving around"), '0'..='9' => println!("Number input"), _ => println!("Something else"), } }
_
ํจํด์ ์ด๋ค ๊ฐ๊ณผ๋ ๋งค์นญ๋๋ ์์ผ๋์นด๋์
๋๋ค.
ํค ํฌ์ธํธ:
- ํจํด์์ ์ฌ์ฉ๋๋ ํน์ ๋ฌธ์๋ค์ ์๋ ค์ฃผ์ธ์
|
: or ๊ธฐํธ์ ๋๋ค..
: ํ์ํ ๋งํผ ํ์ฅํฉ๋๋ค1..=5
: ๋ ๊ฐ(์ฌ๊ธฐ์๋ 5)์ ํฌํจํ๋ ๋ฒ์๋ฅผ ๋ํ๋ ๋๋ค_
: ์์ผ๋์นด๋์ ๋๋ค
- ์์ผ๋์นด๋ ๋ฌธ์๋ฅผ ๋ณ์๋ก ๋ฐ๊พธ๊ฑฐ๋
q
์ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๋ ์์ผ๋ก ์์ ํ๋ฉด์ ๋ฐ์ธ๋ฉ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ฒ๋ ์ ์ฉํ ์ ์์ต๋๋ค. - ์ฐธ์กฐ๋ฅผ ๋งค์นญํ๋ ๊ฒ๋ ์์ฐํ ์ ์์ต๋๋ค.
- ์๋ฌ ๋ฉ์์ง์ โ๋ฐ๋ฐ ๋ถ๊ฐ๋ฅ ํจํด(irrefutable pattern)โ์ด๋ ์ฉ์ด๊ฐ ๋ฑ์ฅํ๊ธฐ๋ ํฉ๋๋ค. ์ง๊ธ ๊ทธ ์๋ฏธ๋ฅผ ์๊ฐํ๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.