12. Swift 클로저(Closure)

  • 클로저는 두 가지로 이루어진 객체이다. 하나는 내부 함수이며, 또 다른 하나는 내부 함수가 만들어진 주변 환경이다.
  • 클로저는 외부 함수 내에서 내부 함수를 반환하고, 내부 함수가 외부 함수의 징역 변수나 상수를 참조할 때 만들어 진다.
  • 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경(Context)을 모두 포함한 객체이다

func basic(param : Int) -> (Int) -> Int{
 
  //—————클로저 범위
   let value = param + 20

    func append(add : Int) -> INT {
        return value + add
    }
    //———— 클로저 범위

    return append
}

  1. 전역 함수 - 이름이 있으며, 주변 환경에서 캡쳐할 어떤 값도 없는 클로저
  2. 중첩 함수 - 이름이 있으며 자신을 둘러싼 함수로부터 값을 캡쳐할 수 있는 클로저
  3. 클로저 표현식 - 이름이 없으며 주변 환경으로부터 값을 캡쳐할 수 있는 경량 문법으로 작성된 클로저

//클로저 표현식
{(매개변수) -> 반환타입 in
    실행할 구문
}

###################

let f = { () -> Void in
    print(“클로저가 실행됩니다”)
}

f()
//클로저가 실행됩니다

###################

var value = [1, 9, 5, 7, 3, 2]

func order(s1:Int , s2:Int) -> Bool {
    if s1 > s2 {
        return true
    } else {
        return false
    }
}

value.sort(by: order)  // [9, 7, 5, 3, 2, 1]

*클로저 표현식으로 변경

{
    (s1:Int, s2:Int) -> Bool in
    if s1 > s2 {
        return true
    } else {
        return false
    }
}

value.sort(by:{s1:Int,s2:Int) ->Bool in return s1 > s2}) 


'Swfit' 카테고리의 다른 글

14. 딕셔너리 (Dictionary)  (0) 2017.08.04
13. Swift 구조체와 클래스  (0) 2017.08.04
11. Swift 함수의 중첩  (0) 2017.08.04
10. Swift 일급 객체로서의 함수  (0) 2017.08.04
9. Swift 매개변수  (1) 2017.08.04

설정

트랙백

댓글