ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Range Operator (๋ฒ”์œ„ ์—ฐ์‚ฐ์ž)
    Swift 2022. 1. 9. 22:22

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

     

    ์ด๋ฒˆ์—๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž (Range Operator)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค!

    Range Operator๋Š” ์ฃผ๋กœ ๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ์ปฌ๋ ‰์…˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ์ด ๋˜๋Š”๋ฐ,

    ๋จผ์ € lowerBound์™€ upperBound์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผํ•œ๋‹ค.

     

    lowerBound๋Š” ์‹œ์ž‘๊ฐ’์„ ์˜๋ฏธํ•˜๊ณ , upperBound๋Š” ์ข…๋ฃŒ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

    ๋˜ํ•œ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, lowerBound๋Š” ํ•ญ์ƒ upperBound๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผํ•œ๋‹ค. 

     

    Range Operator๋Š” Closed Range Operator์™€ Half-Open Range Operator์˜ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

    Closed Range Operator๋Š” upperBound๊ฐ€ ๋ฒ”์œ„์— ํฌํ•จ๋˜๋Š” ๋ฐ˜๋ฉด์—, Half-Open Range Operator๋Š” upperBound๊ฐ€ ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

     

     

    ์ฆ‰, Closed Range Operator๋Š” (lowerBound ~ upperBound) ๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,

    Half-Open Range Operator๋Š” (lowerBound ~ upperBound - 1) ๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

     

     

    Closed Range Operator

    Closed Range Operator๋Š” ์•ž์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด lowerBound์™€ upperBound๋ฅผ ํฌํ•จํ•œ๋‹ค.

    1 ... 5 // Closed Range Operator (1 ~ 5)
    1...5

    ์œ„์˜ ์ฝ”๋“œ๋Š” 1๋ถ€ํ„ฐ 5๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, 

     

    Closed Range Operator๋Š” ์—ฐ์‚ฐ์ž ์–‘ ์˜†์— ๋ชจ๋‘ ๊ณต๋ฐฑ์ด ์žˆ๊ฑฐ๋‚˜, ์–‘ ์˜†์— ๊ณต๋ฐฑ์ด ๋ชจ๋‘ ์—†์–ด์•ผํ•œ๋‹ค.

    ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์—ฐ์‚ฐ์ž ์–‘ ์˜†์ด ์•„๋‹Œ ํ•œ ์ชฝ์—๋งŒ ๊ณต๋ฐฑ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ฉด ์—ฐ์†์ ์ธ ๋ฌธ์žฅ์€ ';'๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

     

    ๊ทธ๋ ‡๋‹ค๋ฉด, ๋งŒ์•ฝ 1๋ถ€ํ„ฐ 5๊ฐ€ ์•„๋‹Œ 5๋ถ€ํ„ฐ 1์„ ๋ฒ”์œ„๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

    ์•ž์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ, lowerBound๋Š” ํ•ญ์ƒ upperBound๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 5 ... 1๋กœ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

     

     

    ๋”ฐ๋ผ์„œ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด, ReversedCollection์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

    (1 ... 5).reversed() ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

     

     

    for-in ๋ฌธ์„ ํ†ตํ•ด ์‹ค์ œ๋กœ ๊ฐ’์ด 5๋ถ€ํ„ฐ 1๊นŒ์ง€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

    ์ฝ”๋“œ
    ์ถœ๋ ฅ ๊ฒฐ๊ณผ

     

     

    ์ดํ•ญ ์—ฐ์‚ฐ์ž ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์—์„œ๋„ Closed Range Operator๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์™€ ๊ณต๋ฐฑ ์—†์ด ๋ถ™์—ฌ์„œ ์จ์•ผ ํ•œ๋‹ค.

    ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐฐ์—ด์—์„œ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด ๋•Œ lowerBound ๋˜๋Š” upperBound ์ค‘์— ํ•˜๋‚˜๋งŒ ์„ค์ •ํ•ด์ค€๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ๊ฒฝ๊ณ„๊ฐ’์€ ์ž๋™์œผ๋กœ ์„ค์ •๋œ๋‹ค. 

    ๋ฌผ๋ก , ์ดํ•ญ ์—ฐ์‚ฐ์ž์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—ฐ์‚ฐ์ž ์–‘ ์˜†์— ๊ณต๋ฐฑ์ด ์žˆ์–ด๋„ ๋œ๋‹ค.

     

    Half-Open Range Operator

    Half-Open Range Operator๋Š” upperBound๊ฐ€ ๋ฒ”์œ„์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค. 

    1 ..< 5 // Half-Open Range Operator (1 ~ 4)
    1..<5

    ์œ„์˜ ์ฝ”๋“œ๋Š” 1๋ถ€ํ„ฐ 4๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฆ‰ 5๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

    Half-Open Range Operator ๋˜ํ•œ ์—ฐ์‚ฐ์ž ์–‘ ์˜†์— ๋ชจ๋‘ ๊ณต๋ฐฑ์ด ์žˆ๊ฑฐ๋‚˜, ์–‘ ์˜†์— ๊ณต๋ฐฑ์ด ๋ชจ๋‘ ์—†์–ด์•ผํ•œ๋‹ค.

     

    ๋งŒ์•ฝ Half-Open Range Operator์—์„œ lowerBound์™€ upperBound์˜ ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋ฅผ ์ƒ๋žตํ•œ๋‹ค๋ฉด, ์—ฐ์‚ฐ์ž ์˜†์— ๊ณต๋ฐฑ์ด ์žˆ์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค!

    ๊ณต๋ฐฑ์ด ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์™€ ๋ถ„๋ฆฌ๋˜์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

     

     

     

    Half-Open Range Operator๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” lowerBound๋ฅผ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— Int์˜ ์ตœ์†Œ๊ฐ’๋ถ€ํ„ฐ 4๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.

     

     

    ์ถ”๊ฐ€์ ์œผ๋กœ, for๋ฌธ์—์„œ upperBound์˜ ์ƒ๋žต๊ณผ ๊ฐ™์ด ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ๊ณ ์ •๋œ ๋ฒ”์œ„์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ์žŠ์ง€๋ง์ž!

    ๋Œ“๊ธ€

Designed by Tistory.