1. 클로저

1-1. 클로저란?

클로저는 보통 익명함수라고 불리지만, 사실 func 키워드를 붙힌 함수도 클로저이며, 우리는 흔히 func 키워드를 붙이지 않은 클로저를 편의 상 클로저라고 부른다!

클로저에는 func 키워드 + 함수이름 유무 에 따라서 두가지로 구분된다!

있으면 → Named Closure ⇒ 흔히 우리는 함수라고 부른다.

없으면 → Unnamed Closure ⇒ 이걸 우리는 편의 상 클로저라고 부른다

Untitled

1-2. 클로저 표현식

Untitled

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

값이 없으면 → ()로 대체하면 된다! 물론 리턴 타입을 생략해도 되지만 이건 다음 아티클에서 한번에 정리하자!

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

ii) Parameter와 Return Type이 둘 다 있는 클로저

여기서 주의할 점은 name이 하나만 쓰였으니까 파라미터인 동시에 매개변수구나~ 라는 생각을 하면 안된다! 왜냐하면 클로저에선 Argument Label을 사용하지 않기 때문이다!

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

closure("희재") // "Hello, 희재"
closure(name: "희재") // error 발생한다!