๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ Today I Learned/Swift ๋ฌธ๋ฒ•

[Swift] ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ˜๋ณต๋ฌธ

by Joseph Seong 2023. 12. 6.

 

 

 

 

์กฐ๊ฑด๋ฌธ

 

if ๋ฌธ

// if ๋’ค "์กฐ๊ฑด"์€ Bool ํƒ€์ž… ์ฆ‰ true ํ˜น์€ false ์ด์–ด์•ผ ํ•œ๋‹ค.
if <#์กฐ๊ฑด#> {
  // ๊ตฌํ˜„๋ถ€ ์ฝ”๋“œ
}

var temperature = 17
if temperature <= 13 {
    print("์Œ€์Œ€ํ•œ ๋‚ ์”จ๊ฐ€ ์ง€์†๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.")
} else if temperature >= 22 {
    print("ํ•ด๊ฐ€ ๋– ์˜ค๋ฅด๋Š” ๋‚ฎ๋ถ€ํ„ฐ๋Š” ๋”์œ„ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.")
} else {
    print("๋ฐค๋‚ฎ์œผ๋กœ ์„ ์„ ํ•œ ๋‚ ์”จ๊ฐ€ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.")
}
// ์ถœ๋ ฅ๊ฐ’: ๋ฐค๋‚ฎ์œผ๋กœ ์„ ์„ ํ•œ ๋‚ ์”จ๊ฐ€ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

if true {
		print("ํ•ญ์ƒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค")
}
// ์ถœ๋ ฅ๊ฐ’: ํ•ญ์ƒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค

if false {
		print("ํ•ญ์ƒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค")
}
// ์ถœ๋ ฅ๊ฐ’: (์—†์Œ) - if ๋’ค ์กฐ๊ฑด๋ฌธ์ด false์ด๋ฏ€๋กœ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ

 

switch ๋ฌธ

 

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


let cookieCount = 62
let message: String
switch cookieCount {
case 0:
    message = "๐Ÿช ์—†์Œ ๐Ÿ™…‍โ™‚๏ธ"
case 1..<5:
    message = "๐Ÿช ์•„์ฃผ ์กฐ๊ธˆ ์žˆ์Œ"
case 5..<12:
    message = "๐Ÿช ์กฐ๊ธˆ ์žˆ์Œ"
case 12..<100:
    message = "๐Ÿช ๊ฝค ์žˆ์Œ ๐Ÿช"
case 100..<1000:
    message = "๐Ÿช๐Ÿช ๋งŽ์Œ ๐Ÿช๐Ÿช"
default:
    message = "๐Ÿช๐Ÿช๐Ÿช์—„์ฒญ ๋งŽ์Œ๐Ÿช๐Ÿช๐Ÿช"
}
print(message)
// ์ถœ๋ ฅ๊ฐ’: "๐Ÿช ๊ฝค ์žˆ์Œ ๐Ÿช"


let species = "์‹œ์ธ„"

switch species {
case "๋งํ‹ฐ์ฆˆ" :
	print("๋งํ‹ฐ์ฆˆ์ž…๋‹ˆ๋‹ค")
case "์‹œ์ธ„":
	break // ์‹คํ–‰ ๊ตฌ๋ฌธ์ด ์—†์„๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ break๋ฅผ ์จ์ฃผ์–ด์•ผ ํ•จ
default: 
	print("๊ฐ•์•„์ง€์ž…๋‹ˆ๋‹ค")
}


var number = 5

switch number {
case ..<5:
    print("under 5")        
    fallthrough
case 5:
    print("5")
    fallthrough // ํ•ด๋‹น ์ผ€์ด์Šค์˜ ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ ์ดํ›„์—๋„ ๋ฌด์กฐ๊ฑด ๋‹ค์Œ๋ธ”๋Ÿญ์„ ์‹คํ–‰ํ•จ
default:
    print("default")
}
// ์ถœ๋ ฅ ๊ฒฐ๊ณผ 
// 5
// default

// default๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์˜ˆ์‹œ
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: .friday)

 

 

 

 

๋ฐ˜๋ณต๋ฌธ

 

for ๋ฌธ

 

  • for๋ฌธ์€ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…(๋ฐฐ์—ด, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ)์„ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜ ํŠน์ • ํšŸ์ˆ˜๋งŒํผ ๋กœ์ง์„ ๋ฐ˜๋ณตํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
for ๊ฐ value์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„ in ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž… {
     // ๋‚ด๋ถ€ ๋กœ์ง
}

let alphabets: [String] = ["a", "b", "c", "d"]

for character in alphabet {
  print(character)
}

// ์ถœ๋ ฅ๊ฐ’: 
// a
// b
// c
// d

let students = ["Tom": 2, "Harry": 4, "Sarah": 1]

for (name, grade) in students {
  print("\(name) ์€ \(grade) ํ•™๋…„์ด์•ผ")
}

// ์ถœ๋ ฅ๊ฐ’: 
// Tom ์€ 2 ํ•™๋…„์ด์•ผ
// Harry ์€ 4 ํ•™๋…„์ด์•ผ
// Sarah ์€ 1 ํ•™๋…„์ด์•ผ

 

 

while ๋ฌธ



  • while๋ฌธ์€ ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋Š” ๋™์•ˆ ๋‚ด๋ถ€๋กœ์ง์„ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์ด๋‹ค.
  • ์ข…๊ฒฐ ์กฐ๊ฑด์„ ์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฌดํ•œ๋ฃจํ”„๊ฐ€ ์ƒ๊ธธ ์œ„ํ—˜์„ฑ์ด ์žˆ๋‹ค.
  • while๋ฌธ์€ ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฐ ํŒจ์Šค๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•œ๋‹ค.
// while ๋’ค์˜ "์กฐ๊ฑด"์€ Bool ํƒ€์ž…, ์ฆ‰ true ํ˜น์€ false์ด๊ณ , true์ผ๋•Œ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€ ์ฝ”๋“œ ์‹คํ–‰
while <#์กฐ๊ฑด#> {
   // ๊ตฌํ˜„ ์ฝ”๋“œ
}

let lastName : [String] = ["์†ก", "๊น€", "๋ฐ•", "์ •" ]

var index : Int = 0
while index < 4 {
    print("์˜†์ง‘ \(lastName[index]) ์”จ๋„ค \(index)๋ฒˆ์งธ ๊ฒฐํ˜ผ์‹")
    index += 1
}
// ์ถœ๋ ฅ๊ฐ’:
// ์˜†์ง‘ ์†ก ์”จ๋„ค 0๋ฒˆ์งธ ๊ฒฐํ˜ผ์‹
// ์˜†์ง‘ ๊น€ ์”จ๋„ค 1๋ฒˆ์งธ ๊ฒฐํ˜ผ์‹
// ์˜†์ง‘ ๋ฐ• ์”จ๋„ค 2๋ฒˆ์งธ ๊ฒฐํ˜ผ์‹
// ์˜†์ง‘ ์ • ์”จ๋„ค 3๋ฒˆ์งธ ๊ฒฐํ˜ผ์‹

while true {
		print("Hello") // Hello ๊ฐ€ ๊ณ„์† ์ถœ๋ ฅ๋จ
        // ๋Š์–ด์ค„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ํ•„์š”
}