๐Ÿ“’ Study/๐Ÿšฉ Swift

[ Swift ] ์‚ผํ•ญ์—ฐ์‚ฐ์ž์™€ ๋ฒ”์œ„์—ฐ์‚ฐ์ž

EarthSea 2024. 3. 7. 19:15

 

1. ์‚ผํ•ญ์—ฐ์‚ฐ์ž


 

1) ์‚ผํ•ญ์—ฐ์‚ฐ์ž (Ternary Conditional Operator)

: ๊ธฐ๋ณธ ํ˜•ํƒœ / if๋ฌธ๋ณด๋‹ค ์กฐ๊ธˆ์€ ํ•œ์ •์ ์ธ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์„ ํƒ์ด ๋‘๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

condition ? ์ฐธ์ผ๋•Œ์˜ ์‹คํ–‰๋ฌธ : ๊ฑฐ์ง“์ผ๋•Œ์˜ ์‹คํ–‰๋ฌธ

์™ผ์ชฝ์˜ condition์ด ์ฐธ / ๊ฑฐ์ง“ ์œ ๋ฌด์— ๋”ฐ๋ผ ํด๋ก  ์•ž์˜ ๊ฐ’์ด ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋’ค์˜ ๊ฐ’์ด ์‹คํ–‰๋œ๋‹ค.

โ—๏ธ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ?์™€ : ์•ž ๋’ค ์‚ฌ์ด์˜ ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ผญ ํ•ด์•ผํ•จ.

 

  • if - else ๋ฌธ
var a = 10

if a > 0 {
    print("1")
} else {
    print("2")
}
  • ์œ„์˜ if - else๋ฌธ์„ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ ํ‘œํ˜„
a > 0 ? print("1") : print("2")

→ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” if-else๋ฌธ๊ณผ ๋™์ผํ•จ.

 

var name = a > 0 ? "์Šคํ‹ฐ๋ธŒ" : "ํŒ€์ฟก"
  • ์กฐ๊ฑด์— ๋”ฐ๋ผ ์„ ํƒ์ด ๋‘๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ผํ•ญ์—ฐ์‚ฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•˜๋‹ค.
  • ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ๋‹จ๋…์œผ๋กœ ์“ฐ์ด๊ธฐ ๋ณด๋‹ค๋Š”, ๊ฒฐ๊ณผ ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ.

 

 

 


 

2. ๋ฒ”์œ„์—ฐ์‚ฐ์ž / ํŒจํ„ด๋งค์นญ ์—ฐ์‚ฐ์ž


1) ๋ฒ”์œ„์—ฐ์‚ฐ์ž

: ์ œํ•œ๋œ ์ˆซ์ž์˜ ๋ฒ”์œ„๋ฅผ ํ‘œ๊ธฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ์ž

let numbers = 1 ... 10
  • ๊ทœ์น™
    • ๋‚ด๋ฆผ์ฐจ์ˆœ ํ˜•์‹์œผ๋กœ ํ‘œ๊ธฐ ๋ถˆ๊ฐ€๋Šฅ. ( ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ณ€ํ™˜์€ ๊ฐ€๋Šฅ)
    • ๋“œ๋ฌผ๊ฒŒ๋Š” ์‹ค์ˆ˜ ํ˜•์‹์˜ ๋ฒ”์œ„๋„ ๊ฐ€๋Šฅ
  • ํ™œ์šฉ
    • switch๋ฌธ์—์„œ ํŒจํ„ด ๋งค์นญ
    • for๋ฌธ
    • ๋ฐฐ์—ด์˜ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•

 

 

ํŒจ์‡„ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž( Closed Range Operator )

: ํ•ด๋‹น ๊ฐ’์„ ํฌํ•จํ•˜๋ฉด์„œ ๋ฒ”์œ„๋ฅผ ์ •์˜

  • (์ˆซ์ž) … (์ˆซ์ž) : ์–‘์ชฝ ๋์ด ๋ง‰ํ˜€์žˆ๋Š” ๋ฒ”์œ„
let range = 1 ... 5
// 1, 2, 3, 4, 5
  • (์ˆซ์ž)… : ์™ผ์ชฝ ๋๋งŒ ๋ง‰ํ˜€์žˆ๋Š” ๋ฒ”์œ„
let range1 = 1...
// 1, 2, 3, 4, 5, ...

  • …(์ˆซ์ž) : ์˜ค๋ฅธ์ชฝ ๋๋งŒ ๋ง‰ํ˜€์žˆ๋Š” ๋ฒ”์œ„
let range2 =  ...5
// ... -1, 0, 1, 2, 3, 4, 5

 

 

๋ฐ˜ํ์‡„ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž ( Half-Open Range Operator )

: ์•ž์˜ ๊ฐ’์€ ํฌํ•จํ•˜๋ฉด์„œ ๋’ค์˜ ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ๋ฒ”์œ„๋ฅผ ์ •์˜

  • (์ˆซ์ž) ..< (์ˆซ์ž) : ์•ž์˜ ๊ฐ’์€ ํฌํ•จํ•˜๋ฉด์„œ ๋’ค์˜ ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š๊ฒŒ ์–‘์ชฝ ๋์ด ๋ง‰ํ˜€์žˆ๋Š” ๋ฒ”์œ„
let rangeH = 1 ..< 5
// 1, 2, 3, 4

→ ๋ฐฐ์—ด์˜ for ๋ฌธ์—์„œ ๋งŽ์ด ์“ฐ์ž„

var number = [1, 5, 6, 7, 0]
var answer = 0

for i in 0..<number.count {
    answer += i*number[i]
}
print(answer)
// ์ถœ๋ ฅ : 38
  • ..<(์ˆซ์ž) : ๋’ค์˜ ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š๊ฒŒ ์˜ค๋ฅธ์ชฝ ๋์ด ๋ง‰ํ˜€์žˆ๋Š” ๋ฒ”์œ„
let rangeH1 =  ..<5
// ... , -1, 0, 1, 2, 3, 4

โ—๏ธ One-Sided๋กœ ํ‘œ๊ธฐํ•  ๋•Œ๋Š” ๊ผญ ์ˆซ์ž์™€ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉ

 

 

 

2) ~= (ํŒจํ„ด๋งค์นญ ์—ฐ์‚ฐ์ž)

: ๋ฒ”์œ„์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์“ฐ์ด๋Š” ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž๊ฐ€ ๋ฒ”์œ„๋‚ด์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์ž

let range = 1...10

print(range ~= 5)
// ๊ฒฐ๊ณผ : true

→ ์˜ค๋ฅธ์ชฝ์˜ 5๊ฐ€ ๋ฒ”์œ„ 1๋ถ€ํ„ฐ 100๊นŒ์ง€์— ์†ํ•ด์žˆ๋Š”์— ๋Œ€ํ•œ Bool๊ฐ’์„ ๋ฆฌํ„ด

var n = 20

if n >= 10 && n <= 100 {
    print("10์ด์ƒ, 100์ดํ•˜์ž…๋‹ˆ๋‹ค.")
}

if 10...100 ~= n {
    print("10์ด์ƒ, 100์ดํ•˜์ž…๋‹ˆ๋‹ค.")
}

โ—๏ธ ์Šค์œ„ํ”„ํŠธ์—์„œ 10<=n<=100๋Š” ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค. ( 10 ... 100์ด ๋งž๋Š” ํ‘œํ˜„ )

  • switch ๋ฌธ์€ ๋‚ด๋ถ€์ ์œผ๋กœ **ํŒจํ„ด๋งค์นญ์—ฐ์‚ฐ์ž(~=)**๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
switch age {
case 20...29:
    print("20๋Œ€ ์ž…๋‹ˆ๋‹ค.")
case 30...39:
    print("30๋Œ€ ์ž…๋‹ˆ๋‹ค.")
default :
    break
}