โŒจ๏ธ Language/swift

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

hyebin (Helia) 2024. 3. 17. 11:30
๋ฐ˜์‘ํ˜•

1. ์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์˜ ๊ฐœ๋…

์–ด๋– ํ•œ ๊ฐ’์ด ํŠน์ • ์กฐ๊ฑด์— ํ•ด๋‹นํ•  ๋•Œ๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰

if-else

if ์กฐ๊ฑด {
    //์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋ฉด ์‹คํ–‰
} else {
    //์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰
}
var a : String = "์ฒ ์ˆ˜"
var b : String = "์งฑ๊ตฌ"
var c : String = "๋งน๊ตฌ"

if a == "์ฒ ์ˆ˜" {
    print("์ •๋‹ต!")
}
else {
    print("a๋Š” \\(a)์ž…๋‹ˆ๋‹ค.")
}

if b == "์œ ๋ฆฌ" {
    print("์ •๋‹ต!")
}
else {
    print("b๋Š” \\(b)์ž…๋‹ˆ๋‹ค.")
}
// ์ •๋‹ต!
// b๋Š” ์งฑ๊ตฌ์ž…๋‹ˆ๋‹ค.
var age : Int = 19
var student : String = ""

if age >= 8 && age < 14 {
  student = "์ดˆ๋“ฑํ•™์ƒ"
} else if age < 17 {
  student = "์ค‘ํ•™์ƒ"
} else if age < 20 {
  student = "๊ณ ๋“ฑํ•™์ƒ"
} else {
  student = "๊ธฐํƒ€"
}
  • else if ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์ค‘ ์ œ์–ด ๊ฐ€๋Šฅ

switch-case

switch ๋น„๊ต๊ฐ’ {
case ํŒจํ„ด:
  /*์‹คํ–‰๊ตฌ๋ฌธ*/

default:      //else if ๊ฐ™์€ ๊ฐœ๋…
  /*์‹คํ–‰๊ตฌ๋ฌธ*/
}
switch value
{
case value1:
    respond to value 1
case value2,
     value3:
    respond to value 2 or 3
default:
    otherwise, do something else
}
switch weather {
case "rain":
    print("Bring an umbrella")
case "snow":
    print("Wrap up warm")
case "sunny":
    print("Wear sunscreen")
    fallthrough
default:
    print("Enjoy your day!")
}
//Wear sunscreen
//Enjoy your day!
  • ํŒจํ„ด ๋น„๊ต๋ฌธ
  • ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ๋งค์นญ๋˜๋Š” ํŒจํ„ด์˜ ๊ตฌ๋ฌธ ์‹คํ–‰
  • switch๋ฌธ์˜ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์ˆซ์ž ํ‘œํ˜„์ด ์•„๋‹Œ ๋ฌธ์ž, ๋ฌธ์ž์—ด, ์—ด๊ฑฐํ˜•, ํŠœํ”Œ, ๋ฒ”์œ„, ํŒจํ„ด์ด ์ ์šฉ๋œ ํƒ€์ž… ๋“ฑ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ’๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ.
  • ๊ฐ ์ƒํƒœ๋Š” ํ‚ค์›Œ๋“œ case๋ฅผ ํ†ตํ•ด ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ
    • case ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์‹คํ–‰ํ•˜๋ฉด break ์—†์ด๋„ ๊ตฌ๋ฌธ์ด ์ข…๋ฃŒ
    • case๋Š” ์›ํ•˜๋Š” ๋งŒํผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์„ฑ ๊ฐ€๋Šฅ
    • ์ž˜๋ชป๋œ case ์‚ฌ์šฉ
    let stringValue: String = "์•„์นด๋ฐ๋ฏธ"
    
    switch stringValue {
    case "์• ํ”Œ":
        print("์•ˆ๋…•ํ•˜์„ธ์š” ์• ํ”Œ์ž…๋‹ˆ๋‹ค.")
    case "์‚ผ์„ฑ":
        //์‹คํ–‰๋  ์ฝ”๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    default:
        print("์•ˆ๋…•ํ•˜์„ธ์š” \\(stringValue)์— ์ฐพ์•„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค")
    }
    
    // ์•ˆ๋…•ํ•˜์„ธ์š” ์•„์นด๋ฐ๋ฏธ์— ์ฐพ์•„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค
    
    โฌ‡๏ธ
    
    let stringValue: String = "์•„์นด๋ฐ๋ฏธ"
    
    switch stringValue {
    case "์• ํ”Œ":
        fallthrough
    case "์‚ผ์„ฑ":
        fallthrough
    case "ํ•˜์šธ":
        fallthrough
    case "ํฌ๋‡จ", "์†Œํ”ผ์•„", "์บ˜์‹œํผ":
        print("์•ˆ๋…•ํ•˜์„ธ์š”. \(stringValue)")
    default:
        print("์•ˆ๋…•ํ•˜์„ธ์š” \(stringValue)์— ์ฐพ์•„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค")
    }
    
    // ์•ˆ๋…•ํ•˜์„ธ์š” ์•„์นด๋ฐ๋ฏธ์— ์ฐพ์•„์™€์ฃผ์…”์„œ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค
     
    • ์œ„ case ๋ธ”๋Ÿญ์˜ "ํฌ๋‡จ", "์†Œํ”ผ์•„", "์บ˜์‹œํผ": ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ํ•œ ๋ฒˆ์— case ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ
      • ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด case๋ฅผ ์—ฐ๋‹ฌ์•„ ์“ฐ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ
      • case XXX:๋‹ค์Œ์—๋Š” ๊ผญ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•ด์•ผ ํ•จ
  • switch๋ฌธ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งˆ์ง€๋ง‰์— default ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
    • ๋งค์šฐ ํ•œ์ •์ ์ธ ๊ฐ’ (enumcase ๋“ฑ)์ด ๋น„๊ต ๊ฐ’์ด ์•„๋‹Œ ํ•œ default ๊ตฌ๋ฌธ์€ ๋ฐ˜๋“œ์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•จ
    • ๋‹จ, default ํ‚ค์›Œ๋“œ ์—†์ด๋„ ๋ชจ๋“  ๊ฒฝ์šฐ๊ฐ€ ์ปค๋ฒ„ ๋˜์—ˆ๋‹ค๋ฉด, default ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์–ด๋„ ๋จ.
  • switch๋ฌธ์˜ case๋ฅผ ์—ฐ์† ์‹คํ–‰ → fallthrough ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ
    • fallthrough๋Š” ์›ํ•˜๋Š” ๋งŒํผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Interval Matching
    • ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•ด, ๋‹จ์ˆœํžˆ ๊ฐ’์„ ๋งค์นญํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด ๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ํ†ตํ•ด ๋งค์นญ
      func interSwitch(count:Int)
      {
          let countedThings = "moons orbiting Saturn"
          let naturalCount: String
          
          switch count
          {
          case 0:
              naturalCount = "no"
          case 1..<5:
              
              naturalCount = "a few"
          case 5..<12:
              
              naturalCount = "several"
          case 12..<100:
              
              naturalCount = "dozens of"
          case 100..<1000:
              
              naturalCount = "hundreds of"
          default:
              naturalCount = "many"
          }
          
          print("There are \\(naturalCount) \\(countedThings).")
      }
      
  • whereํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ case์˜ ์กฐ๊ฑด์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ
let IceCream: String = "๋น„๋น„๋น…"
let price: Int = 400
let isDelicious: Bool = false

switch IceCream {
case "๋น„๋น„๋น…" where isDelicious == true:
    print("์•„์ฃผ ๋ง›์žˆ๋‹ค!")
case "๋น„๋น„๋น…" where price < 1000 && isDelicious == false:
    print("\\(IceCream)...? ์ œ๊ฐ€ ๋ณ„๋กœ ์‹ซ์–ดํ•˜๋Š”๊ฒƒ์„ ์‚ฌ์˜ค์…จ๋„ค์š”..")
case "๋น„๋น„๋น…" where price > 200:
    print("์™€ ์—„์ฒญ ์‹ธ๋‹ค!")
case "๋ฉ”๋กœ๋‚˜":
    print("๋ฉ”๋กœ๋‚˜")
default:
    print("๋ง›์ด ์—†๋„ค์š”...")
}

// ๋น„๋น„๋น…...? ์ œ๊ฐ€ ๋ณ„๋กœ ์‹ซ์–ดํ•˜๋Š”๊ฒƒ์„ ์‚ฌ์˜ค์…จ๋„ค์š”..
  • ์—ด๊ฑฐํ˜•์— case๊ฐ€ ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋ฉด unknown์ด๋ผ๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์Œ
    • ์—ด๊ฑฐํ˜•์— ์ •์˜ํ•œ ๋ชจ๋“  case๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜๊ฒ ์ง€๋งŒ, ๋‚˜์ค‘์— ์—ด๊ฑฐํ˜•์— case๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๊ธฐ์กด์˜ switch๋ฌธ์€ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ → switch๋ฌธ์ด ๋ชจ๋“  case์— ๋Œ€ํ•ด ๋Œ€๋น„ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ
enum Menu {
    case Pizza
    case Chicken
}

let lunchMenu: Menu = .Pizza

switch lunchMenu {
case .Chicken:
  print("์–‘๋…์น˜ํ‚จ")
case .Pizza:
print("๋„๋ฏธ๋…ธํ”ผ์ž!")
case _:  // default์™€ ๊ฐ™์€ ํ‘œํ˜„
print("์น˜ํ‚จ์†Œ์Šค ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”")

}

//๋„๋ฏธ๋…ธํ”ผ์ž!

 

switch ↔ if

let chr = "a"

if chr == "a" {
    print("์บ๋ฆญํ„ฐ๋Š” a ์ž…๋‹ˆ๋‹ค.")
}
else if chr == "b" {
    print("์บ๋ฆญํ„ฐ๋Š” b ์ž…๋‹ˆ๋‹ค.")
}
//์บ๋ฆญํ„ฐ๋Š” a ์ž…๋‹ˆ๋‹ค.
let chr = "a"   //"b" ๋กœ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ๊ฐ’์€ "์ด๊ฒƒ์€ b ์ž…๋‹ˆ๋‹ค."๋กœ ๋ฐ”๋€œ

switch chr {
case "a" :
    print("์ด๊ฒƒ์€ a ์ž…๋‹ˆ๋‹ค.")
case "b" :
    print("์ด๊ฒƒ์€ b ์ž…๋‹ˆ๋‹ค.")
default:
    print("์•„๋ฌด๊ฒƒ๋„ ์„ ํƒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.")
}
//์ด๊ฒƒ์€ a ์ž…๋‹ˆ๋‹ค.

 

func loveCalculator() {
    let loveScore = Int.random(in: 0...100)
    
    if loveScore > 80 {
        print("๋‹น์‹ ์€ ์„œ๋กœ ๋งŽ์ด ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.")
    } if loveScore > 40 && loveScore <= 80  {
        print("๋‹น์‹ ์€ ์ธ์„ ํƒ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.")
    } else {
        print("๋‹น์‹ ์€ ํ‰์ƒ ํ˜ผ์ž์ž…๋‹ˆ๋‹ค..")
    }
}
loveCalculator()
func loveCalculator() {
    let loveScore = Int.random(in: 0...100)
    
    switch loveScore {
    case 81..100:
      print("๋‹น์‹ ์€ ์„œ๋กœ ๋งŽ์ด ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค.")
    case 41..<81:
      print("๋‹น์‹ ์€ ์ธ์„ ํƒ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.")
    case ...40:
      print("๋‹น์‹ ์€ ํ‰์ƒ ํ˜ผ์ž์ž…๋‹ˆ๋‹ค..")
    default:
      print("๋‹ค์‹œ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”")

 

โ“ ์–ธ์ œ if ๋Œ€์‹  switch๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

  • switch๋ฌธ์€ ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“์€ ์—ฌ๋Ÿฌ ๊ฐ’๋“ค๊ณผ์˜ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ switch๋ฌธ ๋‚ด์˜ control flow๋ฅผ ๊ฒฐ์ •
  • if๋ฌธ์€ ๋ถˆ๋ฆฌ์–ธ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋‚ด๋†“๋Š” ์กฐ๊ฑด๋ฌธ์— ๋”ฐ๋ผ true, false์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ๊ฐ ๋‘ ๊ฐœ์˜ ํ๋ฆ„์œผ๋กœ ๊ฐˆ๋ผ์ง
    •  if๋ฌธ์„ ์ค‘์ฒฉ๋˜๊ฒŒ ๋ฐฐ์น˜ํ•˜๋ฉด, ๋‘ ๊ฐœ์˜ ํ๋ฆ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ธ ๊ฐœ, ๋„ค ๊ฐœ ๋“ฑ๋“ฑ.. ๊ทธ ์ด์ƒ์˜ control flow์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋จ.
    •  (if / else if / else์™€ ๊ฐ™์€ ๋ฐฉ์‹)
  •  if๋ฌธ์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ƒํ™ฉ์— switch๋ฌธ์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ๋ชจ๋“   switch๋ฌธ์€ if๋ฌธ์œผ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Œ

 

→ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ๋ฆ„์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์งœ์•ผํ•  ๋•Œ์— switch๋ฌธ๊ณผ if๋ฌธ์ด ๋‘˜ ๋‹ค ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ

→ switch๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

 

2. ๋ฐ˜๋ณต๋ฌธ

๋ฐ˜๋ณต๋ฌธ์˜ ๊ฐœ๋…

๋ฐ˜๋ณต๋ฌธ์ด๋ž€ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ œ์–ด ๊ตฌ์กฐ

 

for ๋ฐ˜๋ณต๋ฌธ

  • for ๋ฐ˜๋ณต๋ฌธ์€ ํŠน์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
for index in 1...5 {
	print(index)
}

// 1
// 2
// 3
// 4
// 5
let array = [1, 2, 3, 4, 5]

for element in array {
	print(element)
}

// 1
// 2
// 3
// 4
// 5
  • ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?
    • ๋ณดํ†ต ์–ด๋А ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€์ง€ ์•„๋Š” ๊ฒฝ์šฐ
    • ๋ฐฐ์—ด์ด๋‚˜ ๋”•์…”๋„ˆ๋ฆฌ์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์ปฌ๋ ‰์…˜์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์žฅ์ 
    • ํŠน์ • ํšŸ์ˆ˜ ๋™์•ˆ ํ˜น์€ ์ปฌ๋ ‰์…˜์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ• ์ œ๊ณต
    • ์ปฌ๋ ‰์…˜ ๋ฐ˜๋ณต๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Œ

While ๋ฐ˜๋ณต๋ฌธ

  • While ๋ฐ˜๋ณต๋ฌธ์€ ํŠน์ • ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
var count = 0
while count < 5 {
	print(count)
	count += 1
}
// 0
// 1
// 2
// 3
// 4
  • ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?
    • ๋ณดํ†ต ์–ด๋А ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ
    • ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์žฅ์ 
    • ๋ฐ˜๋ณต์„ ๋ช‡ ๋ฒˆ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฅผ ๋•Œ ์œ ์šฉํ•จ
    • ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Œ
let numbers = [1, 3, 6, 7, 9, 10, 12]

var index = 0
var firstEvenNumber: Int?

while index < numbers.count && firstEvenNumber == nil {
    let number = numbers[index]
    if number % 2 == 0 {
        firstEvenNumber = number
    }
    index += 1
}

if let evenNumber = firstEvenNumber {
    print("The first even number in the array is \\(evenNumber).")
} else {
    print("There are no even numbers in the array.")
}

Repeat-While ๋ฐ˜๋ณต๋ฌธ

  • Repeat-While ๋ฐ˜๋ณต๋ฌธ์€ While ๋ฐ˜๋ณต๋ฌธ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ธฐ ์ „์— ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰
var count = 0
repeat {
  print(count)
  count += 1
} while count < 5

// 0
// 1
// 2
// 3
// 4
  • ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?
    • ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ธฐ ์ „์— ์ฝ”๋“œ ๋ธ”๋ก์„ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๊นŒ์ง€ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์žฅ์ 
    • ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์กฐ๊ฑด์— ๊ด€๊ณ„์—†์ด ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•จ

 

๐Ÿ’ก ๋ฐ˜๋ณต๋ฌธ ์ •๋ฆฌ

 

[For ๋ฐ˜๋ณต๋ฌธ]

  • ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ
  • ๋ฒ”์œ„ ํ˜น์€ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์‹œํ€€์Šค๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต
  • ๋ฐ˜๋ณตํ•  ๋•Œ๋งˆ๋‹ค ๋ฃจํ”„ ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€/๊ฐ์†Œ
  • ์‹œํ€€์Šค๊ฐ€ ๋น„์–ด์žˆ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์ด ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ 

[While ๋ฐ˜๋ณต๋ฌธ]

  • ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ
  • ์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰
  • ์กฐ๊ฑด์€ ๊ฐ ๋ฐ˜๋ณต์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ํ‰๊ฐ€๋จ
  • ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฃจํ”„ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์—์„œ ์ˆ˜๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•จ

[Repeat-While ๋ฐ˜๋ณต๋ฌธ]

  • While ๋ฃจํ”„์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๊ฐ ๋ฐ˜๋ณต์˜ ๋ ๋ถ€๋ถ„์—์„œ ์กฐ๊ฑด์ด ํ‰๊ฐ€๋จ
  • ๋ฐ˜๋ณต๋ฌธ์€ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๊ธฐ ์ „์— ํ•ญ์ƒ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰
๋ฐ˜์‘ํ˜•