[ios/swift]Clousure

감자맨·2022년 7월 30일
0

swift

목록 보기
10/14
post-thumbnail

📒📕 📗📘📙📚📖 swift 문법을 공부하자!📒📕 📗📘📙📚📖

clousure

함수를 표현할때 3가지로 나뉜다.

  • 전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저
  • 중첩 함수 : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저
  • 클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저

func 키워드를 이용해 이름을 붙여주는 함수들도 모두 클로저이다. 즉, 이름이 있는 함수(Named Closure), 이름이 없는 함수(Unnamed Closure)이다.
이를 클로저라 부르지 않고 흔히 함수라고 부른다.

이름이 있는 closure

func myFunction(closure: () -> Void){
    print("I'm my func")
    closure()

}

closure 표현식

{ (인자들) -> 반환타입 in
  실행구문
}

Parameter와 Return Type이 둘 다 없는 클로저

let closure = { () -> () in
    print("Closure")
}

Parameter와 Return Type이 있는 클로저

let closure: (String, String) -> Void = {
    print($0)
    print($1)
}
closure("Closure" , "2")
// closure
// 2

closure 특징

  • 클로저를 변수나 상수에 대입할 수 있다.
  • 함수의 파라미터 타입으로 클로저를 전달할 수 있다.
  • 함수의 반환 타입으로 클로저를 사용할 수 있다.
클로저를 변수나 상수에 대입
let closure = { () -> () in
    print("Closure")
}
let closure2 = closure
함수의 파라미터 타입으로 클로저를 전달
hello(closure: { () -> () in
    print("Hello!")
})
함수의 반환 타입으로 클로저를 사용
func hello() -> () -> () {
    
    return { () -> () in
        print("Hello I'm yoojin!")
    }
}
let closure = hello()
closure()
// Hello I'm yoojin!
profile
나는 코딩하는 감자다!

0개의 댓글