func doSomething() {
print("Name Closure")
}
let closure = { print("Unnamed Closure") }
{ (Parameters) -> Rturn Type in
실행구문
}
// 여기서
// (Parameters) -> Rturn Type 이 Clousure Head
// in
// 실행구문 이 Closure Body
파라미터(Parameter)와 리턴 타입(Return Type) 모두 가지지 않는 클로저
let Closure = {() -> () in
print("Closure")
}
파라미터(Parameter)와 리턴 타입(Return Type) 모두 가지는 클로저
let Closure = {(name: String) -> (String) in
return "Closure!"
}
변수나 상수에 대입 가능, 실행 가능
//작성 시 클로저 대입
let closure = { () -> () in
print("Closure")
}
//새로운 변수나 상수에 기존 클로저 대입
let closure2 = closure
함수의 파라미터 타입으로 전달 가능
//함수를 파라미터로 전달 받는 함수doSomething
//파라미터로 함수를 전달
func doSomething(closure: () -> ()) {
closure()
}
//파라미터로 클로저 전달
doSomething(closure: { () -> () in
print("Closure!")
})
/*
{ () -> () in
print("Closure!")
}
이 부분이 "클로저"로 작성된 영역*/
함수의 반환 타입으로 사용 가능
//선언
func doSomething() -> () -> () {
}
//example
func doSomething() -> () -> () {
return { () -> () in
print("Closure!")
}
}
//실행
let clousure = doSomething()
closure()
실행 방법
1. 클로저가 대입된 변수 혹은 상수 호출
let closure = { () -> String in
return "Closure!"
}
closure()
{ () -> () in
print("Closure!")
}) ()
//1.클로저 소괄호()로 감싸기
//2.호출 구문 () 붙이기