break์ continue
Rust์์ ๋ฐ๋ณต๋ฌธ์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํค์๋ ์ค ๋ํ์ ์ธ ๊ฒ์ด break์ continue์ด๋ค. ์ด ๋ ํค์๋๋ ๋ฐ๋ณต๋ฌธ์ ํ๋ฆ์ ์ง์ ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ํ์ฉํ๋ฉด ๋ก์ง์ ๋จ์ํํ๊ณ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค. ํ์ง๋ง ์ฌ์ฉ ๋น๋๋ ์์น๋ฅผ ์๋ชป ์ค์ ํ๋ฉด ์คํ๋ ค ํ๋ฆ ํ์ ์ด ์ด๋ ค์์ง ์ ์์ผ๋ฏ๋ก ์ฃผ์ ๊น๊ฒ ์ดํด๋ณผ ํ์๊ฐ ์๋ค. ์ด ์ ์์๋ break์ continue๊ฐ ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ํ๊ณ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง, ๊ทธ๋ฆฌ๊ณ Rust์์ ์ ๊ณตํ๋ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ(๋ ์ด๋ธ(Label) ์ฌ์ฉ ๋ฑ)์ ๋ํด ์์ธํ ์ค๋ช ํ๋ค.
๋ฐ๋ณต๋ฌธ์ ํฌ๊ฒ loop, while, for๋ก ๊ตฌ๋ถํ ์ ์๋ค. ์ด ์ค break์ continue๋ ๋ชจ๋ ์ข ๋ฅ์ ๋ฐ๋ณต๋ฌธ์์ ํ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋ด๋ถ์ ๋ธ๋ก ํ๋ฆ์ ์ฆ์ ๋ฐ๊พธ๋ ์ฉ๋๋ก ์ฐ์ธ๋ค. break๋ ๋ฐ๋ณต๋ฌธ์ ์์ ํ ๋น ์ ธ๋์ค๋ ๊ธฐ๋ฅ์, continue๋ ํด๋น ๋ฐ๋ณต์ ๋จ์ ๋ถ๋ถ์ ๊ฑด๋๋ฐ๊ณ ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด๋ฌํ ์ ์ด ํ๋ฆ ๋ณ๊ฒฝ์ ์ฑ๋ฅ์ด๋ ์ฝ๋ ๋จ์ํ ์ธก๋ฉด์์ ์ ์ฉํ ์ ์์ง๋ง, ๋๋ฌด ์์ฃผ ์ฌ์ฉํ๊ฑฐ๋ ๋ณต์กํ๊ฒ ์ฝ์ด์ ์ฐ๋ฉด ์ฝ๋๋ฅผ ์ฝ๋ ์ด์๊ฒ ํผ๋์ ์ค ์ ์๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ ์ ๋ฐ๋์ ์๋๋ฅผ ๋ช ํํ๊ฒ ๋๋ฌ๋ด์ผ ํ๋ค.
break ํค์๋
Rust์์ break๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์คํ ์ค์ธ ๋ฐ๋ณต๋ฌธ์ ์ฆ์ ์ข ๋ฃํ๋ค. ์ผ๋ฐ์ ์ผ๋ก while ๋๋ for ๋ฃจํ ๋ด๋ถ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๋ฐ๋ณต์ ๋๋ด๊ธฐ ์ํด break๋ฅผ ์์ฃผ ์ด๋ค. ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ Rust์ loop๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌดํ ๋ฃจํ๋ก ์์ฑํ ์ ์์ผ๋ฏ๋ก, ์ด๋ฐ ๋ฌดํ ๋ฃจํ๋ฅผ ์ธ์์ ์ผ๋ก ํ์ถํ๋ ๋ชฉ์ ์ผ๋ก๋ break๋ฅผ ํ์ฉํ๋ค.
์๋๋ break๋ฅผ ํตํด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ ์ ํ์ ์ธ ์์์ด๋ค.
fn main() {
let mut count = 0;
loop {
count += 1;
if count > 5 {
break;
}
println!("count: {}", count);
}
println!("๋ฐ๋ณต๋ฌธ ์ข
๋ฃ ํ count: {}", count);
}์ด ์์์์ loop๋ ๋ฌดํ ๋ฐ๋ณต์ด์ง๋ง, count๊ฐ 5๋ฅผ ์ด๊ณผํ๋ฉด break๋ฅผ ํตํด ์ฆ์ ๋น ์ ธ๋์จ๋ค. ๋ฐ๋ผ์ 6๋ฒ ์ด์ ์ฆ๊ฐํ๋ ์ผ ์์ด ๋ฐ๋ณต์ด ๋๋๊ณ , ์ต์ข ์ ์ผ๋ก count๋ 6์ด ๋๋ค.
Rust๋ ๋จ์ ์ข ๋ฃ ์ธ์๋ break ํค์๋๋ฅผ ํ์ฉํด loop์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ ์ ์๋ค. loop ์์ฒด๊ฐ ํํ์(Expression)์ผ๋ก ๊ฐ์ฃผ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค์ ์์๋ฅผ ๋ณด์.
์ด ์ฝ๋์์ loop ๋ด๋ถ์์ break 10์ ์คํํ๋ฉด loop ํํ์์ ๊ฒฐ๊ณผ๋ก 10์ด ๋ฐํ๋๋ค. ๋ฐ๋ผ์ result ๋ณ์์๋ 10์ด ํ ๋น๋๋ค. while๊ณผ for ๋ฃจํ์์๋ ์ด๋ฐ ์์ ๋ฐํ๊ฐ์ ์ง์ ํ ์ ์๊ณ , ์ค์ง loop์์๋ง ๋ฐํ๊ฐ์ด ๊ฐ๋ฅํ๋ค.
์ฌ๋ฌ ๊ฐ์ ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ด ์์ ๋ ํน์ ๋ฐ๋ณต๋ฌธ ํ๋๋ง ๋น ์ ธ๋๊ฐ๊ณ ์ถ๋ค๋ฉด, Rust์ ๋ ์ด๋ธ(Label) ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค. ๋ ์ด๋ธ์ ๋ฐ๋ณต๋ฌธ ์์ 'label_name: ํํ๋ก ์์ฑํ๊ณ , break๋ continue ๋ค์ 'label_name์ ๋ถ์ฌ์ ์ด๋ค ๋ฐ๋ณต๋ฌธ์ ๋์์ผ๋ก ํ ๊ฒ์ธ์ง ์ง์ ํด ์ค๋ค. ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด ์์์์ x + y๊ฐ 5๋ฅผ ์ด๊ณผํ๋ฉด ์ฆ์ 'outer ๋ ์ด๋ธ์ด ๋ถ์ ๋ฐ๊นฅ for ๋ฃจํ๋ฅผ ๋น ์ ธ๋๊ฐ๋ค. ๋ ์ด๋ธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด break๋ ์์ ์ด ์ํ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฐ๋ณต๋ฌธ๋ง ํ์ถํ๊ธฐ ๋๋ฌธ์, ์ค์ฒฉ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ปจํธ๋กคํ๋ ค๋ฉด ๋ ์ด๋ธ์ ํ์ฉํด์ผ ํ๋ค.
continue ํค์๋
Rust์์ continue ํค์๋๋ ํ์ฌ ๋ฐ๋ณต์ ์ค๋จํ๊ณ ๋ค์ ๋ฐ๋ณต์ผ๋ก ์ฆ์ ๋์ด๊ฐ๋๋ก ํ๋ค. ๋ฐ๋ณต๋ฌธ ๋ด์์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๊ฒฝ์ฐ์ ์์ ์ ๊ฑด๋๋ฐ๊ณ ์ถ๊ฑฐ๋, ๊ตณ์ด ๋จ์ ์ฝ๋๋ฅผ ์คํํ ํ์๊ฐ ์์ ๋ continue๋ฅผ ์ฌ์ฉํ๋ค. ์กฐ๊ฑด์ ๋ถ๊ธฐํ๊ณ ๋น ๋ฅธ ํ๋จ์ผ๋ก ๋์ด๊ฐ ์ ์์ผ๋ฏ๋ก ์ฝ๋ ํ๋ฆ์ด ๊ฐ๋จํด์ง ์ ์์ผ๋, ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต ๋ธ๋ก์ ๋ ผ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง ์ ์๋ค.
๋ค์ ์์๋ count๊ฐ ์ง์์ผ ๋๋ ์ถ๋ ฅํ์ง ์๊ณ ๋ฐ๋ก ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๋ ์ํฉ์ ๋ํ๋ธ๋ค.
์ด ์ฝ๋์์ count๊ฐ ์ง์์ด๋ฉด if ๋ธ๋ก์ ํต๊ณผํ์ฌ continue๋ฅผ ์คํํ๊ณ , ๋จ์ println! ๋ถ๋ถ์ ๊ฑด๋๋ด๋ค. ๊ฒฐ๊ตญ ์ถ๋ ฅ๋๋ ๊ฐ์ ๋ชจ๋ ํ์์ธ 1, 3, 5, 7, 9๊ฐ ๋๋ค.
continue ์ญ์ break์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ ์ด๋ธ์ ํ์ฉํ์ฌ ์ค์ฒฉ๋ ๋ฐ๋ณต๋ฌธ์ ์ ์ดํ ์ ์๋ค. ๋จ์ํ ํ์ฌ ๋ฃจํ๊ฐ ์๋ ์์ ๋ ๋ฒจ์ ๋ฐ๋ณต๋ฌธ ๋จ๊ณ๋ก ๋์ด๊ฐ๊ณ ์ถ๋ค๋ฉด, continue ๋ค์ ๋ ์ด๋ธ์ ๋ถ์ผ ์ ์๋ค. ๋ค๋ง ์ผ๋ฐ์ ์ธ ์ํฉ์์๋ break๋ฅผ ๋ ์ด๋ธ๊ณผ ํจ๊ป ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์ข ๋ ์ฆ๋ค.
๋ ์ด๋ธ์ด ์ ์ฉ๋ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ด ์์์์ x == y์ธ ์ํฉ์ด ์ค๋ฉด 'outer ๋ ์ด๋ธ์ด ๋ถ์ ๋ฐ๊นฅ for ๋ฃจํ์ ๋ค์ ๋ฐ๋ณต์ผ๋ก ๋์ด๊ฐ๋ค. ๋ฐ๋ผ์ ๋ดํฌ๋ for ๋ฃจํ ๋ด๋ถ๋ ๋ ์ด์ ์งํ๋์ง ์๊ณ , x์ ๋ค์ ๊ฐ์ผ๋ก ์ธ๋ถ ๋ฃจํ๋ฅผ ์งํํ๊ฒ ๋๋ค.
break์ continue๋ ๋ฐ๋ณต๋ฌธ์ ๊ฐ๋ ฅํ๊ฒ ์ ์ดํ ์ ์์ง๋ง, ์ฌ์ฉ ์ ์๋๊ฐ ์ ๋ช ํ๊ฒ ๋๋ฌ๋๋๋ก ์ฃผ์ํด์ผ ํ๋ค. ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ถ์ ํ๊ธฐ ์ด๋ ค์์ง๊ณ , ๊ฐ๋จํ ๋ก์ง์ด๋ผ๋ ๋ณต์กํด ๋ณด์ผ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์ด๋ธ์ ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ๋น ์ ธ๋๊ฐ๊ฑฐ๋ ๊ฑด๋๋ธ ๋๋ง ์ ํ์ ์ผ๋ก ์ ์ฉํ๋ ๊ฒ์ด ์ข๋ค. Rust์ ์ ์ด ํ๋ฆ์ ๋ช ์์ ์ค๊ณ๋ฅผ ์ค์ํ๋ฏ๋ก, break์ continue์ ๋ชฉ์ ๊ณผ ๋ฒ์๊ฐ ๋ช ํํ ๋๋ง ์ฌ์ฉํ๊ธธ ๊ถ์ฅํ๋ค.
๊ฒฐ๊ตญ break๋ ๋ฐ๋ณต๋ฌธ์ ์ฆ์ ์ข ๋ฃ, continue๋ ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ถ ๋ก์ง ์คํต ํ ๋ค์ ๋ฐ๋ณต ์งํ์ด๋ผ๋ ๋ ๊ฐ์ง ์ค์ํ ์ ์ด๋ฅผ ๋งก๋๋ค. ํ์์ ๋ฐ๋ผ ์ ์ ํ ํ์ฉํ๋ฉด ๋ฐ๋ณต๋ฌธ ๊ตฌ์กฐ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๊ณ ์ฑ๋ฅ์ด๋ ๊ฐ๋ ์ฑ ๋ฉด์์ ์ด์ ์ ์ป์ ์ ์๋ค. ๋ค๋ง ๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ก์ง์ด ์ฝํ ๊ณณ์์๋ ์ฝ๋๊ฐ ๋ํดํด์ง ์ํ์ด ์์ผ๋ฏ๋ก, ์ํฉ์ ๋ง์ถฐ ์ ์ ํ ์ฌ์ฉํ๋ ์ต๊ด์ ๊ฐ์ถ๋ ๊ฒ์ด ์ข๋ค.
Last updated