μ΄λ² κΈμ νλ¦ μ μ΄ κ΅¬λ¬Έμ λν μ 리μ λλ€.
λ°λ³΅λ¬Έ
- μ£Όμ΄μ§ 쑰건μ μν΄ νΉμ μ½λ λΈλ‘μ λ°λ³΅μ μΌλ‘ μ€νν μ μκ² ν΄μ£Όλ ꡬ문
- For λ°λ³΅λ¬Έ → νμμ μν λ°λ³΅
- μν λμ → μ£Όλ‘ μλ²μ κ°μ§λ μ§λ¨ μλ£νμ΄λ λλ λ²μλ₯Ό κ°μ§λ λ°μ΄ν° λ±
- λ°°μ΄, λμ
λ리, μ§ν©, λ²μ λ°μ΄ν°, λ¬Έμμ΄
- Stringμ Character νμ μ κ°λ³ λ¬Έμλ€μ΄ λͺ¨μ¬ μ΄λ£¨μ΄μ§ κ°μ²΄
- String νμ μ체λ μν μ²λ¦¬λ₯Ό μ§μνμ§ μμ characters μμ±μ μ΄μ©ν΄μΌ νλ€.
var str = "abcde" for char in str.characters { print(char) }
- λ°°μ΄, λμ
λ리, μ§ν©, λ²μ λ°μ΄ν°, λ¬Έμμ΄
- 루ν μμ
- κ΅¬λ¬Έμ΄ λ°λ³΅λ λλ§λ€ μν λμμ΄ ν¬ν¨νκ³ μλ κ°λ³ μμ΄ν λ€μ μ°¨λ‘λ‘ λ겨λ°μ μμλ‘ μ μ₯, μ€ν λΈλ‘ λ΄μμ μ¬μ©ν μ μλλ‘ ν¨
- 루ν κ΅¬λ¬Έμ΄ μνν λλ§λ€ μλμΌλ‘ μ¬μ μΈλλ―λ‘ letμΌλ‘ μ§μ μ μΈν νμκ° μλ€.
- μ€μ§ for λΈλ‘ λ΄μμλ§ μ¬μ©ν μ μλ€.
- λ¨μν μν λμμ ν¬κΈ°λ§νΌ λ°λ³΅νλ κ²μ΄ λͺ©μ μ΄λ©΄ μΈλλ° _ μ¬μ©νμ¬ λ£¨ν μμ μλ΅ κ°λ₯
for _ in 1...5 { print("hello") }
- μν λμ → μ£Όλ‘ μλ²μ κ°μ§λ μ§λ¨ μλ£νμ΄λ λλ λ²μλ₯Ό κ°μ§λ λ°μ΄ν° λ±
- for 루ν μμ in μν λμ { μ€νν ꡬ문 }
- While λ°λ³΅λ¬Έ → 쑰건μ μν λ°λ³΅
- 쑰건μ λ§μ‘±νλ λμ κ³μ μ€ν
- μ΄λ²€νΈ 루ν → 무ν 루ν
- ν°μΉλ ν΄λ¦ λ± μ¬μ©μμ μ‘μ κ³Ό μ΄λ²€νΈμ μν΄ λμνλ λͺ¨λ°μΌ μ±μ μ¬μ©μμ μ‘μ μ κΈ°λ€λ¦¬λ λμ μ λ ₯ λκΈ° μνλ₯Ό μ μ§
- repeat ~ while λ¬Έ μ‘΄μ¬
- μ½λ λΈλ‘μ μΌλ¨ ν λ² μ€νν λ€μμ 쑰건μ νκ°
- μ€ν λΈλ‘μ μνμ μ΅μ ν λ²μ 보μ₯
- while 쑰건μ { μ€νν ꡬ문 }
쑰건문
- λΆκΈ°λ¬Έ (Branch Statements)
- 쑰건κ°μ λ°λΌ νΉμ ꡬ문μ μ€ννλλ‘ νλ‘κ·Έλ¨μ νλ¦μ λΆκΈ°
- if, guard, switch
if ꡬ문
if 쑰건1 {
//쑰건1μ΄ μ°ΈμΌ λ μ€νν ꡬ문
} else if 쑰건2 {
//쑰건2μ΄ μ°ΈμΌ λ μ€νν ꡬ문
} else {
//쑰건 λͺ¨λ λ§μ‘±νμ§ μμ λ μ€νν ꡬ문
}
- 쑰건문μ λ°λμ Bool νμ
μ true, falseλ₯Ό νλ¨ν μ μλ ννμ ꡬ문
- CμΈμ΄ μ€νμΌκ³Ό λ€λ₯΄κ² true, false λμ 0, 1 μ¬μ©νλ κ²μ νμ©νμ§ μλλ€.
- else if μ¬μ©νμ§ μκ³ if ~ if λ‘ μμ±ν κ²½μ° λΆνμν 리μμ€κ° λλΉλλ€.
guard ꡬ문
guard 쑰건μ or ννμ else {
//쑰건μ or ννμμ κ²°κ³Όκ° falseμΌ λ μ€νλ μ½λ
}
- if ꡬ문과 λ€λ₯΄κ² guard ꡬ문μλ else λΈλ‘μ΄ νμμ§λ§, ννμ κ²°κ³Όκ° true μΌ λ μ€νλλ λΈλ‘μ΄ μλ€.
- μ£Όλ‘ νμ μ½λλ€μ΄ μ€νλκΈ° μ μ νΉμ 쑰건μ λ§μ‘±νλμ§ νμΈνλ μ©λλ‘ μ¬μ©
- νΉμ 쑰건μ λ§μ‘±νμ§ μμ μ±λ‘ νμ μ½λ μ€ννλ©΄ μ¬κ°ν μ€λ₯κ° λ°μν κ²½μ°, μ 체 ꡬ문μ μ‘°κΈ° μ’ λ£( Early Exit )νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©
- else λΈλ‘μλ μ΄νμ μ½λ μ§νμ λ§μμ£Όλ κ΅¬λ¬Έμ΄ λ°λμ ν¬ν¨λμ΄μΌ νλ€.
- return λλ break ꡬ문
- λ³΄ν΅ ν¨μλ λ©μλμμ μ¬μ©λλ€.
- λ³Έλ μ€ν νλ¦μ μ’
λ£νκΈ° μν λͺ©μ μΌλ‘ μ¬μ©λλ ꡬ문
- μ½λλ₯Ό μ€μ²©ν΄μ μ¬μ©νμ§ μμλ λλ€λ μ₯μ μ΄ μλ€.
- guard ꡬ문μ λ§μ΄ μ¬μ©ν΄λ μ½λμ κΉμ΄κ° κΉμ΄μ§μ§ μλλ€.
#available ꡬ문
- κΈ°κΈ°μ OS λ²μ λ³λ‘ ꡬ문μ λλμ΄ μμ±ν΄μΌ ν λ
‘APIκ° λ²μ μ νλ€’
- νΉμ APIλ₯Ό μ¬μ©ν λ μ ν κ°λ°μμ© API λ¬Έμ νμΈν΄μ μ¬μ© κ°λ₯ν OS λ²μ κ³Ό κΈ°κΈ°λ₯Ό 체ν¬ν΄μΌ νλ€.
- μ΅μ APIλ₯Ό μ¬μ©ν κ²½μ° νμ #available ꡬ문 μ¬μ©ν΄μ μ½λ λΆλ¦¬, νμ λ²μ μ¬μ©μλ₯Ό μν μ²λ¦¬
if #available(iOS 9, OSX 10.10, *) {
//iOS 9μ© API ꡬ문 λλ OS X 10.10μ© API ꡬ문
} else {
//API μ¬μ©νμ§ λͺ»νμ λμ λν μ²λ¦¬
}
- #available ꡬ문μ μΈμκ°μ κ°λ³ μΈμλ‘ μ μλμ΄ μμ΄ μ
λ ₯ κ°μμ μ νμ΄ μλ€.
- λ²μ κ° λμ΄ λμ λ§μ§λ§ μΈμ *
- μ€ν μ€μΈ κΈ°κΈ°μ λ²μ μ 체ν¬νκ³ μ λ ₯λ λ²μ λ€κ³Ό λΉκ΅νμ¬ true, false λ°ν
- iOS, OSX, watchOS, tvOS
switch ꡬ문
- 쑰건μ μ¬λΆκ° μλλΌ ν¨ν΄μΌλ‘ λΉκ΅
switch λΉκ΅ λμ {
case λΉκ΅ ν¨ν΄1 :
//λΉκ΅ ν¨ν΄1μ΄ μΌμΉνμ λ μ€νν ꡬ문
case λΉκ΅ ν¨ν΄2 :
//λΉκ΅ ν¨ν΄2κ° μΌμΉνμ λ μ€νν ꡬ문
default :
//μ΄λ ν¨ν΄λ μΌμΉνμ§ μμμ λ μ€νν ꡬ문
}
- swiftλ μΌμΉνλ λΉκ΅ ν¨ν΄μ΄ μμ κ²½μ° ν΄λΉ λΈλ‘μ μ€ν μ½λλ₯Ό μ²λ¦¬νκ³ , λ μ΄μμ λΉκ΅ μμ΄ μ 체 λΆκΈ°λ¬Έ μ’
λ£
- 맨 μ²μ μΌμΉνλ case λ¬Έ νλλ§ μ€ν
- break ꡬ문 μ¬μ©νμ§ μμλ λ¨
switch ch {
case "a" :
case "A" :
print("a, A")
default :
print("not a, A")
}
- swiftμλ μμ κ°μ μμμ Fall Throughμ μ§μνμ§ μλλ€.
switch ch {
case "a" :
fallthrough
case "A" :
print("a, A")
default :
print("not a, A")
}
- λμ λͺ μμ μΌλ‘ fallthrough ꡬ문 μ¬μ©ν΄μ ꡬν κ°λ₯νλ€.
switch ch {
case "a", "A" :
print("a, A")
default :
print("not a, A")
}
- νλμ case ν€μλλ‘ λΉκ΅ ν¨ν΄μ λ¬Άμ΄ νννλ κ²λ κ°λ₯
μ μ΄ μ λ¬λ¬Έ
- μ½λμ ν λΆλΆμμ λ€λ₯Έ λΆλΆμΌλ‘ μ μ΄ νλ¦μ μ λ¬νμ¬ μ½λκ° μ€νλλ μμλ₯Ό λ³κ²½
- break, continue, fallthrough, return
- break → κ°μ λ‘ μ€ν νλ¦μ μ’ λ£νκ±°λ λ°λ³΅λ¬Έμ λ°λ³΅ μ€λ¨μ μ¬μ©
- continue → ꡬ문 μλμ μλ μ€ν ꡬ문λ€μ 건λλ°κ³ λ€μ λ°λ³΅ μμ
ꡬ문 λ μ΄λΈ
- μ€μ²©λ ꡬ문λ€μμ continue, break μ¬μ©νμ λ μ΄λ€ ꡬ문μ μμ©νλμ§ λͺ ννκ² ννν λ μ¬μ©
λ μ΄λΈ μ΄λ¦ : while 쑰건μ {
//μ€νν ꡬ문
}
break λ μ΄λΈ μ΄λ¦
continue λ μ΄λΈ μ΄λ¦