2021. 1. 12. 12:10γπ§π»π» iOS κ°λ°/Swift
ν΄λΉ κΈμ μΌκ³°λμ μ€μννΈ κ°μμ κ°μΈμ μΈ κ³΅λΆλ₯Ό μ 리ν κΈμ λλ€.
μ λ² ν¬μ€ν μ μ΄μ΄μ μ€μ²©ν¨μμ μ’ λ£λμ§ μλ ν¨μ, λ°ν κ° λ¬΄μ ν¨μμ λν΄μ μμλ³΄κ² μ΅λλ€.
1. μ€μ²© ν¨μ
κΈ°μ‘΄μ C, C++μμλ ν¨μμμμ λ€λ₯Έ ν¨μλ₯Ό νΈμΆνλ κ²μ΄ μΌλ°μ μ΄μμ΅λλ€. κ·Έλ¬λ Swiftμμλ ν¨μ μμ ν¨μλ₯Ό λ£μ΄ ꡬνμ ν μ μμ΅λλ€. Swiftμμ νΉλ³ν μμΉμ μν΄ μμ§ μλ ν λͺ¨λ μ μ ν¨μμΈλ° λΉν΄ ν¨μ μμ ꡬνλ μ€μ²©ν¨μλ ν¨μ μμμλ§ μ¬μ© κ°λ₯ν©λλ€ (λ°ννλ©΄ λ°μμλ μ¬μ© κ°λ₯). νΉν μ μν¨μκ° λ§μ νλ‘κ·Έλ¨μμλ μ€μ²©ν¨μλ₯Ό μ΄μ©νλ©΄ ν¨μ μ¬μ©λ²μλ₯Ό μ’ λ λͺ ννκ² ννν΄μ€ μ μλ μ₯μ μ κ°μ§λλ€.
1. 1. μ€μ²© ν¨μ μμ
// μ€μ²© ν¨μ
typealias UpDownFunc = (Int) -> Int // νμ
λ³μΉ
func funcForMove(shouldGoUP: Bool) -> UpDownFunc { // λ°ν νμ
μ΄ ν¨μ
func goUp(currentFloor: Int) -> Int {
return currentFloor + 1
}
func goDown(currentFloor: Int) -> Int {
return currentFloor - 1
}
return shouldGoUP ? goUp : goDown
}
var currentFloor: Int = 10
var targetFloor: Int = 6
let moveToTarget: UpDownFunc = funcForMove(shouldGoUP: currentFloor<targetFloor)
while currentFloor != targetFloor {
print("νμ¬ \(currentFloor) μΈ΅...")
currentFloor = moveToTarget(currentFloor)
}
print("λ΅! \(currentFloor)μΈ΅ λμ°©.")
2. μ’ λ£λμ§ μλ ν¨μ (Nonreturning function)
μ’ λ£λμ§ μλλ€λ κ²μ return λμ§μκ³ λΉμ μμ μΌλ‘ λλλ ν¨μλ₯Ό λ»ν©λλ€. μ¦ μ΄ λΉλ°ν ν¨μλ μ€λ₯λ₯Ό λμ§κ³ μ€λν μμ€ν μ€λ₯λ₯Ό λ³΄κ³ ν ν νλ‘μΈμ€λ₯Ό μ’ λ£νκΈ° μν΄μ μ겨λ¬μ΅λλ€. λΉλ°ν ν¨μλ μ΄λμλ νΈμΆμ΄ κ°λ₯νκ³ λ°ννμ μ Neverλ‘ λͺ μνμ¬ μ μν©λλ€.
func myHairFallsOut() -> Never {
fatalError("Something very, very bad happened")
}
func goodMorning(isAllIsWell: Bool) -> Void {
guard isAllIsWell else {
print("OMG!")
myHairFallsOut()
}
print("All is well!")
}
goodMorning(isAllIsWell: true) //All is well!
goodMorning(isAllIsWell: false) //OMG! νλ‘μΈμ€ μ’
λ£ ν μ€λ₯ 보κ³
guard ꡬ문μ ifλ¬Έκ³Ό μ μ¬νμ§λ§ μ΄μ§ λ€λ¦ λλ€. μΆν ν¬μ€ν μμ λΉ λ₯Έ μ’ λ£λ₯Ό μν guardλ¬Έμ λν΄μ λ€λ£¨κ² μ΅λλ€.
3. λ°ν κ°μ 무μν μ μλ ν¨μ ( @discardableResult μμ± )
λλ‘λ μλμ μΌλ‘ νλ‘κ·Έλλ¨Έκ° λ°νκ°μ νμνμ§ μμ λ μ»΄νμΌλ¬μκ² λ―Έλ¦¬ μλ €μ€μ κ²½κ³ λ₯Ό λ°μ§ μκ²λ ν¨μλ₯Ό μμ±νλ κ²μ λλ€. ν¨μ μ μΈ μμ @discardableResult μμ±μ μ μ΄ μ μΈν©λλ€.
@discardableResult func saySomething(something: String) -> String {
print(something)
return something
}
saySomething(something: "Mu Ya Ho~")
// λ°ννμ§ μμμ§λ§ μ»΄νμΌλ¬ κ²½κ³ κ° μλ€.
// Mu Ya Ho~
3. λ§λ¬΄λ¦¬
μ΄λ² ν¬μ€ν μμ Swift ν¨μμ λ€μν ννμ λν΄μ μμ보μμ΅λλ€. λΆμ‘±ν λΆλΆμ΄λ μ€λ₯μΈ λΆλΆμ μ§μ κ°μ¬νκ² μ΅λλ€^^. κ·Έλμ λ λ§₯λΆμ μΈμ μ¬κΉμ..
μ°Έμ‘°: μ ν API κ°μ΄λλΌμΈ , μ ν 곡μ κ°λ° λ¬Έμ , Swift 5 νλ‘κ·Έλλ°/ μ§μμ΄ μΌκ³°