본문 바로가기
Swift 문법

스위프트 클로저 (swift closures) 알아보기 5

by 정석 지향 2020. 9. 10.
반응형

지겨우셨죠? 드디어 클로저 알아보기 마지막 5탄입니다.

이번 시간은 다행하게도 비교적 짧은 내용입니다.

이렇게 5개의 글로 나눠 작성하니 나중에 다시 공부하기도 좋을 것 같네요.

 

hiMessage를 풀어보면 String 매개변수를 받아 String 타입을 리턴하는 일반적인 함수 형태입니다.

 

그런데 hiMessageClosure 함수를 보면 리턴 타입이 () -> String으로 낯선 형태로 느껴집니다.

간단하게 생각해서 hiMessageClosure의  리턴 타입이 클로저라고 생각하면 쉽습니다.

 

리턴 부분을 보시면 -> return {"hi " + message}으로

축약된 클로저 표현식 형태임을 알 수 있어요.

 

 

hieMessageClosure를 실행시켜보면 리턴타입인 클로저 () -> String 가 반환됩니다.

hiMessageClosure(message: "오늘도 반가워 클로저야") // () -> String

여기에서 왜 () -> String가 출력되었는지 헷갈릴 수 있습니다.

 

간단한  test 함수와 비교하며 이해해보겠습니다.

test 함수를 보시면 () -> String 형태의 함수입니다.

test //   ()  -> String

test()  // "1"

기본으로 돌아가서 생각해보면 함수를 실행하려면 ()가 붙어야 합니다.

 

즉, test함수와 hiMessageClosure를 비교해보면

hiMessageClosure(message: "오늘도 반가워 클로저야")  = test

hiMessageClosure(message: "오늘도 반가워 클로저야")() = test()

임을 알 수 있습니다.

 

그렇다면 ()를 붙여 실행해보겠습니다.

hiMessageClosure(message: "오늘도 반가워 클로저야")() // "hi 오늘도 반가워 클로저야"

예상했던 결과가 잘 나왔습니다.

 

클로저는 형태가 다양하고 활용이 많아서

접할 때마다 낯설고 어려운 것 같습니다.

스위프트 클로저 알아보기 1~5탄으로 정리해보았는데,

클로저 공부하시는 분들이 조금이라도 도움되셨으면 좋겠습니다.

언제나 잘못된 부분 지적 환영하니 댓글 부탁드릴게요.

감사합니다^^

 

 

 

 

반응형