yb__char
개발은 늘 어려워
yb__char
전체 방문자
오늘
어제
  • 분류 전체보기 (37)
    • 일상 (2)
    • 코딩테스트 (1)
    • Spring (7)
    • 면접 대비 (2)
    • Java (4)
    • Git (3)
    • CleanCode (1)
    • 데이터베이스 (4)
      • SQL (2)
    • 후기 (2)
    • Nestjs (0)
      • Code (0)
      • Typescript (0)
    • Javascript (6)
      • Async (2)
      • lodash (3)
    • iOS (5)
      • Swift 문법 (5)
      • SwiftUI (0)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
yb__char

개발은 늘 어려워

Swift 기초 문법 - 클로저 (2)
iOS/Swift 문법

Swift 기초 문법 - 클로저 (2)

2022. 9. 29. 15:40

이전 클로저 (1)에서는 매개변수로서 데이터를 여러 개 반환하는 클로저까지 알아보았다.

사실 클로저 관한 포스팅을 끝낼까 하다가 Optional 내용이라 해야 할 거 같다고 생각하여 글을 쓰게 된다.

 

Optional 클로저

sayHiOptional 메서드를 선언하는데 매개변수를 Optional로 ?를 붙여 선언하였다.

아래 실행부에서 sayHiOptional()를 실행하면 매개변수가 없이 실행이 되는 것을 확인할 수 있다.

또한 completion을 매개변수로 넣어 실행하면 매개변수 completion이 실행되는 것을 확인할 수 있다.

타입, 반환 정리

클로저 매개변수의 타입 정의와 반환 타입을 정의하는 것에 대해 이해하기 쉽게 정리하려 한다.

설명을 위해 코드블럭으로 코드와 주석으로 작성했다.

// 클로저 내에 매개변수를 void 타입으로 선언하고 return 타입도 void로 선언한 것이다.
() -> Void 와
func completion () {
	// 실행부
} 동일하다.

// 이번엔 매개변수를 String 타입으로 선언하고 return 타입을 void로 선언한 것이다.
(String) -> Void 와
func completion(name: String) {
	// 실행부
    print(" 이름은 \(name) 이다")
} 동일

// 두 개의 매개변수를 String 타입으로 선언하고 return 타입도 이번엔 String 선언하였다.
(String, String) -> Void 와
func completion(first: String, second: String) -> String {
	return "firstName : \(first), secondName : \(second) "
} 와 동일

클로저를 이렇게 사용한다고 생각할 수 있다.

 

collection 함수

마지막 출력문만 보면 myNumbers 배열을 반복하여 transformedNumbers 변수를

map 함수를 사용하여 String Array로 반환하여 선언하였다.

이러한 map, each 등등 collection에서 사용한 함수들이 사실 다 클로저의 일종이다.

map을 설계 당시 아마 예를 들어 C언어의 for(int i = 0; i < array.length; i++)처럼 i라는 임시 변수를 가지고 collection의 길이까지 반복하는 클로저를 만든 거라 생각한다.

 

$sign

클로저를 더 줄여서 저번 포스팅에 언급했던 $sign를 사용하여 클로저를 선언할 수 있다.

아마 $0을 선언하면 왜 배열 인덱스 0번째가 계속 나와야지 점점 증감하면서 반복이 되나요? 라는 생각이 들 수 있는데

이유는 이미 넌지시 언급하였다. 한번 생각해보길 권장한다. 

늘 의심하는 관점이 늘고 해결할 수 있는 솔루션을 넓히는 것이 개발자의 덕목이라 생각한다.

 

 

 

 

'iOS > Swift 문법' 카테고리의 다른 글

Swift 기초 문법 - 클로저 (1)  (0) 2022.09.28
Swift 기초 문법 - 프로퍼티 옵저버, 함수 매개변수, 제네릭  (0) 2022.09.20
Swift 기초 문법 - for 반복문, 변수 unwrapping, struct와 class 차이  (0) 2022.09.02
Swift 기초 문법 - 조건문, forEach 반복문, enum case  (2) 2022.09.01
    'iOS/Swift 문법' 카테고리의 다른 글
    • Swift 기초 문법 - 클로저 (1)
    • Swift 기초 문법 - 프로퍼티 옵저버, 함수 매개변수, 제네릭
    • Swift 기초 문법 - for 반복문, 변수 unwrapping, struct와 class 차이
    • Swift 기초 문법 - 조건문, forEach 반복문, enum case
    yb__char
    yb__char
    안녕하세요 백엔드 개발자 차윤범입니다.

    티스토리툴바