๐Ÿ“’ Study/๐Ÿšฉ Swift

[ Swift ] ์กฐ๊ฑด๋ฌธ

EarthSea 2024. 3. 7. 20:11

 

1. ์กฐ๊ฑด๋ฌธ


 

1) if ๋ฌธ

: ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ฐธ์˜ ๊ฐ’๋งŒ ์‹คํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ

if ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ {
    //code
}

โ—๏ธ์กฐ๊ฑด์˜ ์ž๋ฆฌ์—๋Š” ํ•ญ์ƒ ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ์ด ์™€์•ผ ํ•œ๋‹ค.

 

var number = 3

if number <= 10 {
    print("\\(number)์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
}
// ์ถœ๋ ฅ : 3์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

 

if๋ฌธ์˜ ์ข…๋ฅ˜

  • if - else
number = 20

if number <= 10 {
    print("\\(number)์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ - ๊ฐ™๋‹ค.")
} else {
    print("\\(number)์€ 10๋ณด๋‹ค ํฌ๋‹ค.")
}
// ์ถœ๋ ฅ : 20์€ 10๋ณด๋‹ค ํฌ๋‹ค.
  • if - else if - else
number = 40

if number <= 10 {
    print("\\(number)์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
} else if number >= 30 {
    print("\\(number)์€ 30๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
} else {
    print("\\(number)์€ 10๋ณด๋‹ค ํฌ๊ณ  30๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
}
// ์ถœ๋ ฅ : 40์€ 30๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.
  • if - else if
number = 72

if number <= 10 {
    print("\\(number)์€ 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
} else if number >= 30 {
    print("\\(number)์€ 30๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.")
}
// ์ถœ๋ ฅ : 72์€ 30๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

 

 

if๋ฌธ ์‚ฌ์šฉ์‹œ

  • if๋ฌธ์—์„œ ๋…ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ ๋ฐ ์กฐ๊ฑด์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”
  • ์กฐ๊ฑด์„ &&, ||๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
  • ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ

โ—๏ธํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ํƒ€์ž…๋งŒ ์ผ์น˜ํ•˜๋ฉด ์–ธ์ œ๋“ ์ง€ ์ค‘์ฒฉ์ด ๊ฐ€๋Šฅ(2์ค‘, 3์ค‘ ์ƒ๊ด€์—†์Œ)

 


 

2) switch ๋ฌธ

: ํ‘œํ˜„์‹ ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ (๋งค์นญ์‹œ์ผœ) ๋ถ„๊ธฐ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด๋ฌธ

๐Ÿ“ ๋ถ„๊ธฐ: ์„ ํƒ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ

 

switch ๋ณ€์ˆ˜(ํ‘œํ˜„์‹) {
case ๊ฐ’1 :
    //code
case ๊ฐ’2, ๊ฐ’3 :
    //code
case ๊ฐ’4 :
    //code
    fallthrough
default :
    break
}
  • ์ผ€์ด์Šค๋ฅผ ,(์ฝค๋งˆ)๋กœ ์—ฐ๊ฒฐ๊ฐ€๋Šฅ ( ๊ฐ’2 ๋˜๋Š” ๊ฐ’3 )
  • ๋งŒ์•ฝ case ๋’ค์˜ ์ฝ”๋“œ๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๊ฐ€๋‚จ
  • ๋ณ€์ˆ˜์—์„œ ๋„์ถœ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—” default๊ฐ€ ํ•„์š”
  • ์‹คํ–‰ํ•˜๋ ค๋Š” ์ฝ”๋“œ๊ฐ€ ์—†์„ ๋•Œ, switch๋ฌธ์—์„œ๋Š” break ํ‚ค์›Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด์•ผ ํ•จ.
    ( c์–ธ์–ด, ์ž๋ฐ”์™€ ๋‹ค๋ฅด๊ฒŒ case๋ฌธ๋งˆ๋‹ค break๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. )
  • fallthrough ํ‚ค์›Œ๋“œ๋Š” ๋งค์นญ๋œ ๊ฐ’์— ๋Œ€ํ•œ ๊ณ ๋ ค์—†์ด ๋‹ค์Œ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ.
  • switch๋ฌธ์—์„œ๋Š” ๋ถ€๋“ฑ์‹์ด ์•„๋‹Œ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ

โ—๏ธ if๋ฌธ๋ณด๋‹ค ํ•œ์ •์ ์ธ ๊ฒฝ์šฐ(์ผ€์ด์Šค๊ฐ€ ๋‚˜๋ˆ ์ง„ ๊ฒฝ์šฐ)์— ์‚ฌ์šฉํ•œ๋‹ค.

 

 

fallthrough ํ‚ค์›Œ๋“œ

: case์˜ ๋งค์นญ๋œ ๊ฐ’์— ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด ๋‹ค์Œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•œ๋‹ค.

var num1 = 5

switch num1 {
case ..<10:
    print("1")        
    fallthrough
case 10:
    print("2")
    fallthrough
default:
    print("3")
}

/* ์ถœ๋ ฅ :
1
2
3
*/

→ num1์˜ ์กฐ๊ฑด์€ case ..<10์„ ๋งŒ์กฑํ•˜์ง€๋งŒ, fallthrough ํ‚ค์›Œ๋“œ์— ์˜ํ•ด ๋ชจ๋“  ์ผ€์ด์Šค๊ฐ€ ๋‹ค ์‹คํ–‰๋œ๋‹ค.

 

 

switch๋ฌธ์˜ ๋ฒ”์œ„ ๋งค์นญ ( ํŒจํ„ด ๋งค์นญ ์—ฐ์‚ฐ์ž์™€ ๊ด€๋ จ )

: case๋ฅผ ๋ฒ”์œ„๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•, ๋ถ€๋“ฑ์‹์ด ์•„๋‹Œ ๋ฒ”์œ„ ๋งค์นญ ์‚ฌ์šฉ

var num = 30

switch num {
case 0...50:
    print("์ˆซ์ž์˜ ๋ฒ”์œ„: 0 ~ 50")
case 51...100:
    print("์ˆซ์ž์˜ ๋ฒ”์œ„: 51 ~ 100")
default:
    print("๊ทธ ์™ธ์˜ ๋ฒ”์œ„")
}
// ์ถœ๋ ฅ : ์ˆซ์ž์˜ ๋ฒ•์œ„: 0 ~ 50

→ Switch ๋ฌธ์˜ ๋ฒ”์œ„ ๋งค์นญ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํŒจํ„ด ๋งค์นญ์œผ๋กœ ํ™•์ธํ•œ๋‹ค. 0...50 ~= 30

var temperature = 19

switch temperature {
case ..<0:
    print("์˜ํ•˜ - 0๋„ ๋ฏธ๋งŒ")
case 0...18:
    print("0๋„ ์ด์ƒ ๋ฌด๋ฅ์ง€ ์•Š์€ ๋‚ ์”จ")
case 19...:
    print("์—ฌ๋ฆ„ ๋‚ ์”จ")
default:
    break
}
// ์ถœ๋ ฅ : ์—ฌ๋ฆ„ ๋‚ ์”จ

 

 

if๋ฌธ๊ณผ switch๋ฌธ์˜ ๋น„๊ต

  • If ๋ฌธ์€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฑด์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์‘์šฉ ๋ฒ”์œ„๊ฐ€ ๋„“์Œ ( ๋ชจ๋“  ์กฐ๊ฑด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ )
  • Switch ๋ฌธ์€ If๋ฌธ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ , ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ์— ๋งŽ์ด ์‚ฌ์šฉ ๋จ.

if๋ฌธ๊ณผ switch๋ฌธ์˜ ์‹คํ–‰ํ๋ฆ„ ๋น„๊ต

 


 

3) switch ๋ฌธ์˜ ํ™œ์šฉ

  • switch ๋ฌธ์—์„œ์˜ ๋ฐ”์ธ๋”ฉ
var num = 6

switch num {
case let a:
	print("์ˆซ์ž: \\(a)")
default:
	break
}

// ์ถœ๋ ฅ : 6

→ let a๋ผ๋Š” ์ƒˆ๋กœ์šด ์ƒ์ˆ˜๋กœ ๋ฐ”์ธ๋”ฉ์„ ํ•˜๋Š” ๊ฒƒ์€ let a = num ์ด๋ผ๋Š” ์˜๋ฏธ์™€ ๊ฐ™๋‹ค.

โ—๏ธ๋ฐ”์ธ๋”ฉ์€ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜/์ƒ์ˆ˜ ์‹๋ณ„์ž๋กœ ํ• ๋‹น

var a = 7
let c = a

→ a๋ผ๋Š” ๋ณ€์ˆ˜ ์‹๋ณ„์ž๋ฅผ c๋ผ๋Š” ์ƒˆ๋กœ์šด ์ƒ์ˆ˜ ์‹๋ณ„์ž๋กœ ํ• ๋‹น ์‹œํ‚ค๋Š” ๊ฒƒ

 

  • switch๋Š” enum๊ณผ ๊ด€๊ณ„๊ฐ€ ๊นŠ๋‹ค.
enum Day {
    case monday, tuesday, wednesday, thursday, friday, saturday, sunday
}

func activities(for day: Day) {
    switch day {
    case .monday:
        print("์›”")
    case .tuesday:
        print("ํ™”")
    case .wednesday:
        print("์ˆ˜")
    case .thursday:
        print("๋ชฉ")
    case .friday:
        print("๊ธˆ")
    case .saturday:
        print("ํ† ")
    case .sunday:
        print("์ผ")
    }
}

activities(for: .monday)
activities(for: .wednesday)

// ์ถœ๋ ฅ :
// ์›”
// ์ˆ˜

→ enum ํƒ€์ž…์„ Switch์˜ ๋ณ€์ˆ˜๋กœ ์ ์šฉํ•  ๋•Œ๋Š” default๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

switch๋ฌธ๊ณผ where์ ˆ

: switch๋ฌธ์—์„œ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹

num = 7

switch num {
case let x where x % 2 == 0:
    print("์ง์ˆ˜ ์ˆซ์ž: \\(x)")
case let x where x % 2 != 0:
    print("ํ™€์ˆ˜ ์ˆซ์ž: \\(x)")
default:
    break
}

→ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด let x๋ผ๋Š” ์ƒˆ๋กœ์šด ์ƒ์ˆ˜์— ๋ฐ”์ธ๋”ฉํ•œ ๋‹ค์Œ, ์กฐ๊ฑด์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.

switch num {
case let n where n <= 7:    
   print("7์ดํ•˜์˜ ์ˆซ์ž: \\(n)")
default:
   print("๊ทธ ์ด์™ธ์˜ ์ˆซ์ž")
}

→ ์ด๋ ‡๊ฒŒ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋„ case์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

switch num {
case var x where x > 5:      
    x = 7
    print(x)
default:
    print(num)
}

→ ์ƒ์ˆ˜ let์ด ์•„๋‹Œ ๋ณ€์ˆ˜ var๋กœ ๋ฐ”์ธ๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. case๋‚ด์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ์— ์“ฐ์ธ๋‹ค.

 

โญ๏ธ whereํ‚ค์›Œ๋“œ๋Š” ์กฐ๊ฑด์„ ํ™•์ธํ•˜๋Š” ํ‚ค์›Œ๋“œ