ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Control Transfer Statements (break, continue) (์ œ์–ด ์ „๋‹ฌ๋ฌธ)
    Swift 2022. 1. 12. 23:50

    (๋ชจ๋“  ์ฝ”๋“œ๋Š” Playground์—์„œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)

     

    ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ œ์–ด ์ „๋‹ฌ๋ฌธ (Control Transfer Statements)์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. 

     

    Control Transfer์€ ์ œ์–ด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ,

    ์ด ๋ง์€ ๊ณง ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ Scope์—์„œ์˜ ์ฝ”๋“œ๋ฅผ ์ค‘์ง€ํ•˜๊ณ , ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

     

    Control Transfer Statements์—๋Š” break, continue, fallthrough, return, throw๊ฐ€ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” break์™€ continue์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

     

    1. break

    break๋ฌธ์€ ๋ฐ˜๋ณต๋ฌธ๊ณผ switch๋ฌธ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

    break๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ scope๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ , ์ด์–ด์ง€๋Š” ๋‹ค์Œ ๋ฌธ์žฅ์œผ๋กœ ์ œ์–ด๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.

     

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๊ตฌ๊ตฌ๋‹จ์„ 2๋‹จ๋ถ€ํ„ฐ 9๋‹จ๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

     

    ๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด break๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

    ๋ฐ˜๋ณต ์ƒ์ˆ˜๊ฐ€ i์ธ for ๋ฌธ์€ ์ด 1๋ฒˆ ์‹คํ–‰๋˜๋Š”๋ฐ, ๋ฐ˜๋ณต ์ƒ์ˆ˜๊ฐ€ j์ธ for ๋ฌธ์€ 9๋ฒˆ ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์—์•ผ break ๋ฌธ์— ์˜ํ•ด for ๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค.

    i = 2์ผ ๋•Œ j = 1 ~ 9๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  ๋‚˜๋ฉด, i = 3์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ for ๋ฌธ์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ฒฐ๋ก ์ ์œผ๋กœ ๊ตฌ๊ตฌ๋‹จ์ด 2๋‹จ๋งŒ ์ถœ๋ ฅ๋˜๊ณ , ์ด์–ด์ง€๋Š” ๋ฌธ์žฅ์ธ "์ถœ๋ ฅ ์™„๋ฃŒ"๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

     

    ๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด break ๋ฌธ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

    ์œ„ ์ฝ”๋“œ๋Š” i = 2์ผ ๋•Œ, j = 1์ด ์ „๋‹ฌ๋˜๊ณ  break ๋ฌธ์— ์˜ํ•ด ๋ฐ˜๋ณต ์ƒ์ˆ˜ j์˜ for ๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค. 

    ๊ทธ๋ฆฌ๊ณ  i = 3์ผ ๋•Œ j = 1, i = 4์ผ ๋•Œ j = 1, ... , i = 8์ผ ๋•Œ j = 1, i = 9์ผ ๋•Œ j = 1์ด ์‹คํ–‰๋œ๋‹ค.

    ๋ฐ˜๋ณต ์ƒ์ˆ˜๊ฐ€ i์ธ for ๋ฌธ์€ ์ด 9๋ฒˆ ์‹คํ–‰๋˜๊ณ , ๋ฐ˜๋ณต ์ƒ์ˆ˜๊ฐ€ j์ธ for ๋ฌธ์€ i์— ๋Œ€์‘ํ•˜์—ฌ 1๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค.

    ๊ฒฐ๋ก ์ ์œผ๋กœ ๊ตฌ๊ตฌ๋‹จ์ด 2๋‹จ๋ถ€ํ„ฐ 9๋‹จ๊นŒ์ง€ ์ฒซ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋งŒ ์ถœ๋ ฅ๋˜๊ณ , ์ด์–ด์ง€๋Š” ๋ฌธ์žฅ์ธ "์ถœ๋ ฅ ์™„๋ฃŒ"๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

     

    ์ด๋ ‡๊ฒŒ break ๋ฌธ์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฌธ์žฅ์„ ์ข…๋ฃŒํ•˜๊ณ  ์ด์–ด์ง€๋Š” ๋‹ค์Œ ๋ฌธ์žฅ์„ ํ˜ธ์ถœํ•˜๋Š”๋ฐ,

    ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์ด ๋ฌธ์žฅ์ด ์ค‘์ฒฉ๋˜์–ด ์žˆ๋‹ค๋ฉด, ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋ฌธ์žฅ (๋ฐ˜๋ณต๋ฌธ)์„ ์ค‘์ง€์‹œํ‚จ๋‹ค.

     

    switch ๋ฌธ์—์„œ๋„ break ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์กฐ๊ฑด์— ๋”ฐ๋ผ์„œ switch ๋ฌธ์„ ์ข…๋ฃŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ์ฝ”๋“œ ๋‚ด์—์„œ ์–ด๋–ค ๋ช…๋ น๋„ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด break๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.

     

     

     

     

    2. continue

    continue ๋ฌธ์€ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

    continue๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ๋ฐ˜๋ณต์„ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์Œ ํšŒ์ฐจ์˜ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉฐ, break ๋ฌธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋ฌธ์žฅ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

     

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” i๊ฐ€ ์ง์ˆ˜์ผ ๊ฒฝ์šฐ continue ๋ฌธ์„ ํ˜ธ์ถœํ•˜๊ณ , ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ์—๋Š” ๊ตฌ๊ตฌ๋‹จ์„ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ์ด๋‹ค.

    ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๊ธธ์–ด์„œ ์ผ์ผํžˆ ๋‹ค ์บก์ณํ•˜์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ, ํ™€์ˆ˜์ผ ๋•Œ๋งŒ ๊ตฌ๊ตฌ๋‹จ์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

     

    ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋ฌธ์žฅ์„ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ ๋ง๊ณ , ์›ํ•˜๋Š” ๋ฌธ์žฅ์„ ์ง์ ‘ ์ข…๋ฃŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

     

    ๋‹น์—ฐํžˆ ์žˆ๋‹ค. ๋ฐ”๋กœ Labeled Statements๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค!

     

    Labeled Statements๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ฌธ์žฅ์— ์ด๋ฆ„์„ ๋ถ™์—ฌ์„œ ์ œ์–ด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ฐ˜๋ณต๋ฌธ, if ๋ฌธ, switch ๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

    ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ์ธ์ ‘ํ•œ ๋ฌธ์žฅ์ด ์•„๋‹Œ, ๋™์ผํ•œ Label์„ ๊ฐ€์ง„ ๋ฌธ์žฅ์„ ์ œ์–ดํ•˜๊ฒŒ ๋œ๋‹ค.

     

    Labeled Statements๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

    Label: statement
    
    break Label
    continue Label

     

     

    ์œ„์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๊ตฌ๊ตฌ๋‹จ ์˜ˆ์ œ์ด๋‹ค. ์ด ์ฝ”๋“œ๋Š” "GugudanOnlyOne"์ด๋ž€ ๋ผ๋ฒจ์„ ๊ฐ€์ง„ ๋ฌธ์žฅ์„ ์ œ์–ดํ•œ๋‹ค. 

    ๋”ฐ๋ผ์„œ ์ด ์ฝ”๋“œ๋Š” i = 2์ผ ๋•Œ j = 1์ด ์‹คํ–‰๋˜๊ณ , ๋ฐ”๋กœ break GugudanOnlyOne์— ์˜ํ•ด์„œ ๋ฐ˜๋ณต ์ƒ์ˆ˜ i๋ฅผ ๊ฐ€์ง„ for ๋ฌธ์ด ์ข…๋ฃŒ๋œ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™๋‹ค.

     

    ๋Œ“๊ธ€

Designed by Tistory.