EEYatHo 앱 깎는 이야기

Swift ) Closure(클로저) 축약 문법 - EEYatHo iOS 본문

iOS, Swift/Swift Theory

Swift ) Closure(클로저) 축약 문법 - EEYatHo iOS

EEYatHo 2021. 7. 21. 17:49
반응형

1. Closure란?

호출(실행) 가능한 코드 블록.

클로저 안에서, 클로저가 작성된 범위의 변수나 함수들 접근 가능.

다른 범위에서 실행되어도, 작성된 범위의 항목만 접근 가능.

 

 

2. map 메소드로 축약문법 알아보기

map은 배열의 모든 원소에 특정 연산을 수행한 배열을 반환.

var numbers = [20, 19, 7, 12]
numbers.map({ (number: Int) -> Int in
    return 3 * number
})
// [60, 57, 21, 36]

 

2-1. return 생략

명령어가 하나뿐인 클로저라면, 자동으로 그 명령어의 반환값을 리턴함.

var numbers = [20, 19, 7, 12]
numbers.map({ (number: Int) -> Int in
    3 * number
})
// [60, 57, 21, 36]

 

2-2. 매개변수 타입 및 반환 타입 생략

컴파일러가 추론 가능할 경우, 생략가능

var numbers = [20, 19, 7, 12]
numbers.map({ number in
    3 * number
})
// [60, 57, 21, 36]

 

2-3. 매개변수 이름 생략

$0, $1 순으로 매개변수를 참조할 수 있음. -> 매개변수 이름 명시 불필요

var numbers = [20, 19, 7, 12]
numbers.map({
    3 * $0
})
// [60, 57, 21, 36]

 

2-4. 후행클로저 

후행클로저( 매개변수로 마지막에 있는 클로저 )인 경우, 소괄호 밖으로 꺼낼 수 있음.

var numbers = [20, 19, 7, 12]
numbers.map() {
    3 * $0
}
// [60, 57, 21, 36]

 

2-5. 인자가 클로저뿐인 경우, 소괄호를 아에 생략 가능

var numbers = [20, 19, 7, 12]
numbers.map {
    3 * $0
}
// [60, 57, 21, 36]

 

+ 줄바꿈까지 없애면, 깔끔

var numbers = [20, 19, 7, 12]
numbers.map { 3 * $0 }
// [60, 57, 21, 36]
Comments