클로저는 보통 익명함수라고 불리지만, 사실 func 키워드를 붙힌 함수도 클로저이며, 우리는 흔히 func 키워드를 붙이지 않은 클로저를 편의 상 클로저라고 부른다!
클로저에는 func 키워드 + 함수이름 유무
에 따라서 두가지로 구분된다!
있으면 → Named Closure
⇒ 흔히 우리는 함수라고 부른다.
없으면 → Unnamed Closure
⇒ 이걸 우리는 편의 상 클로저라고 부른다
값이 없으면 → ()로 대체하면 된다! 물론 리턴 타입을 생략해도 되지만 이건 다음 아티클에서 한번에 정리하자!
let closure = { () -> () in
print("Closure")
}
여기서 주의할 점은 name이 하나만 쓰였으니까 파라미터인 동시에 매개변수구나~ 라는 생각을 하면 안된다! 왜냐하면 클로저에선 Argument Label을 사용하지 않기 때문이다!
let closure = { (name: String) -> String in
return "Hello, \\(name)"
}
closure("희재") // "Hello, 희재"
closure(name: "희재") // error 발생한다!