swift 클로저 (Closure)

정승호·2022년 6월 9일
0

클로저 (Closure)

코드에서 전달 및 사용할 수 있는 독립 기능 블록
일급 객체의 역할을 할 수 있음

1급 객체?
다른객체들에 일반적으로 적용가능한 연산을 모두 지원하는 객체
함수에 인자로 넘기기, 수정하기, 변수대입하기와 같은 연산을 지원할 때 일급객체 라고합니다.

이름이 있는 함수 - Named Closure

클로저라고 부르지 않고 함수라고 부릅니다.
클로저 입니다.

func qwer() {
	print("lol")
}

이름을 붙이지 않고 사용하는 함수 - Unnamed Closure

익명함수 라고 합니다.

함수니까 1급객체 함수의 특성을 갖고있습니다.
클로저라고 하면 보통 Unnamed Closure를 말합니다.

let qwer = { print("lol") }

클로저의 표현

익명함수기 때문에 func키워드를 쓰지 않습니다.

클로저 헤드와 클로저 바디로 이루어져 있습니다.

{ (매개 변수) -> 리턴 타입 in
실행 구문
}

매개변수부터 리턴타입까지를 클로저 헤드라고 하며
실행 구문이 클로저 바디입니다.
이 둘을 구분지어 주는 것이 in 입니다.

Parameter와 Return Type이 없는 클로저

let qwer = { () -> () in
    print("lol")
}

Parameter와 Return Type이 있는 클로저

let qwer = { (name: String) -> String in
	return "Hello, \(name)"
}
qwer("lol")

qwer(name: "lol") 이라고 쓰지 않습니다.!
클로저에서는 Argument Label 을 사용하지 않기 때문 입니다.

참고자료

https://fastcampus.co.kr/courses/205949/clips/

https://babbab2.tistory.com/81?category=828998

0개의 댓글