안녕하세요 ^_^
이번 포스팅은 Swift의 핵심이라고 생각되는 " 클로저 " 를 주제로 글을 작성해보도록 하겠습니다.
클로저 (Closure)
클로저는 Named Closure , Unnamed Closure 두 가지 형태로 존재합니다.
Named Closure
Named Closure의 경우에는 클로저의 이름이 정해진 형태로써 흔히 함수라고 불립니다.
UNNamed Closure
UNNamed Closure의 경우에는 이름이 없는 함수라고 생각하시면 돼요.
클로저 표현 문법 (Closure Expressions)
{ (parameters) -> return type in
statements
}
클로저의 표현식은 크게 두 부분으로 나눠서 설명할 수 있을 거 같아요.
: 인자를 넣을 parameters 와 리턴 타입
: 인자 값을 이용해서 처리할 내용을 기술하는 부분
그리고 in 키워드를 통해서 두 부분을 구분하게 해준다고 이해하시면 될 거 같아요.
아래 예시로 다시한번 리마인드 해봅시다!
여기서 보시면
1. exampleClosure 함수의 setName 인자에 클로저를 넣어줍니다.
2. exampleClosure 함수가 호출됐을 때 setName의 인자로 "LEE"를 넘겨주는 구문을 추가해줍니다.
3. exampleClosure 함수를 호출하고 setName 클로저를 작성해줍니다.
- pameters : (a:String)
- return type : String
- statement: return a
이런식으로 클로저를 표현할 수 있습니다.
그런데 클로저 내부가 굉장히 길죠? 뭔가 짧게 줄이고 싶은 욕구가 생기지 않으신가요??
네! 제가 한번 해보겠습니다!!
1. 문맥에서 타입 추론 (Inferring Type From Context)
짠 어때요?? 굉장히 심플해졌죠???
2. 단일 표현 클로저에서의 암시적 반환 (Implicit Returns from Single-Express Closures)
제목이 참 어렵지만! 아주 간단합니다.
클로저의 문법 표현을 보시면 Statement를 정의하는 부분이 있었죠? 그 Statement 부분에 어떠한 로직이 들어가지 않고 단순하게 return 키워드만 존재한다면 return 키워드를 굳이 안 써도 된다!! 이말이죵
그럼 바로 적용을 해보죠!
어때요? 더 깔끔해졌죠????
3. 인자 이름 축약 (Shorthand Arguments Names)
인자 이름 축약은 인자를 네이밍 하는 게 아니고 인자의 순서대로 $0, $1, $2... 이런 식으로 대체하는 거예요.
아래 예시로 한번 확인해보죠!
예시를 보면 현재 클로저 내부에 num1, num2라는 인자를 받고 있죠?? 요놈들을 $0, $1로 바꿔서 표현하는 거예요
짠!! 인자 이름 축약은 저도 굉장히 애용하고 있어요! 참 좋은 녀석이죠!
클로저는 포스팅 하나로 마무리 지으려고 했는데 쉽게 안되네요 ㅠㅠ
다음 포스팅에서는 Escaping Closures , Autoclosures, 그리고 Caption Values에 대해서 설명드리겠습니다.
긴 글 읽어주셔서 감사드려요 다음 포스팅에서 봐요~~
'iOS > Swift' 카테고리의 다른 글
[Swift] ARC 개념 및 weak, unowned 알아보기 (2) (0) | 2022.01.15 |
---|---|
[Swift] ARC 개념 및 weak, unowned 알아보기 (1) (4) | 2022.01.04 |