본문 바로가기
Swift 문법

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

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

안녕하세요 ~ swift 문법을 공부 중입니다.

지난번 시간에 이어서 스위프트  클로저 (swift closures) 알아보기 4탄 이어서 작성해보겠습니다.

혼자 보고 넘어다기보다는 이렇게 글을 남기며 정리하니 공부가 잘 되네요.

 

String 배열String 문자열을 인자로 받아 

배열의 원소이 첫 문자가 인자로 받은 String 문자열

같으면 true를 반환, 다르면 false를 실행하는 

filterString 함수를 만들어보았습니다.

보통의 함수였습니다.

 

이번에는 클로저를 매개변수를 갖는 형태로 filterStringClosure 함수를 만들어보았어요.

(dataArray: [String], closure: (String) -> Bool)에서 알 수 있듯

String 배열String을 매개변수로 갖고 bool 값을 반환하는 클로저를 매개변수로  받고 있습니다.

여러 동영상이나 예제를 보면

보통 조건의 역할을 수행하는 부분을 클로저로 만드는 게 일반적인 것 같습니다.

 

closure: (String) -> Bool 여기서 true, false를 반환하게 되니

 

  if closure(data) {

      newArray.append(data)

    }

 

형태인 closure(data) 부분에 true나 false가 들어가게 됩니다.

true면 newArray에 추가되고 false면 추가되지 않는 로직입니다.

 

filterStringClosure 함수를 실행할 때 클로저 로직을 채워서 실행하는 부분입니다.

실행결과를 result에 담아 print 해보니 잘  나오네요.

 

즉  이렇게 사용하면 실행할 때마다 원하는 로직을 작성한다는 번거로움도 있지만,

반면에 어떤 로직인지 함수를 사용할 때 한눈에 알아보기 쉬우며, 조건을 원하는 대로 쉽게 변경할 수 있습니다.

 

첫 문자가 a인 로직이 아닌, 배열의 원소가 5글자인 로직을 원한다면

if element.first?. description == "a"    ----> if element.count  == 5 

이런 식으로 변경하여 이용할 수 있습니다.   

 

클로저를 미리 변수에 담아 저장하고

filterStringClosure 함수를 실행할 때는 깔끔하게 

filterStringClosure(dataArray: fruit, closure: findA) 이런 식으로 코드를 작성할 수 있습니다.

 

오늘 이렇게 언제 어떻게 사용하는지에 간단히 알아보았습니다.

댓글로 많은 피드백 기다리겠습니다.

감사합니다^^

마지막 클로저 알아보기 5탄도 기대해주세요.

반응형