Philographer

중첩함수 1

함수의 반환 타입으로 함수를 사용할 수 있음.

import UIKit

func foo() -> String{
    return "this is foo()"
}

func boo() -> (Void -> String){
    return foo
}

let b = boo()
b()

//화살표 기준 왼쪽값이 인자 오른쪽이 반환값
//즉 아래와 같다.
func boo() -> Void -> String

import UIKit

func plus(a : Int, b : Int) -> Int{
    return a + b
}

func minus(a : Int, b : Int) -> Int{
    return a - b
}

func times(a : Int, b : Int) -> Int{
    return a * b
}

func devide(a : Int, b : Int) -> Int{
    guard b != 0 else{
        return 0
    }
    return a / b
}

func calc(operand:String) -> (Int, Int) -> Int{
    switch operand {
    case "+":
        return plus
    case "-":
        return minus
    case "/":
        return devide
    case "*":
        return times
    default:
        return plus
    }
}

//방법 1. 가독성이 좋음(단계적)
let c = calc("+")
c(3,4)

//방법 2. 실행은 가능하지만 가독성이 떨어짐
calc("+")(3,4)

'IOS > Swift' 카테고리의 다른 글

객체지향 프로그래밍, 구조체와 클래스 비교  (0) 2016.05.28
클로져(Closure)  (0) 2016.05.28
인자값과 반환값  (0) 2016.05.07
Swift 키보드 입력 (Swift Cin)  (0) 2016.05.07
일급 함수란?  (0) 2016.05.07
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다