728x90
Map
import UIKit
// 요약:
// Map은 A object 리스트에서 B object 리스트로 변환시 사용
// - B로 변환 실패하면 nil을 넘김
// - 변환 결과에 nil 포함
// CompactMap은 nil을 넘기지 않음
let stringValues = ["hi", "1", "3", "hello"]
/// Map vs CompactMap
let intValuesWithMap = stringValues.map { string in
return Int(string)
}
intValuesWithMap
// [nil, 1, 3, nil]
let intValueWithCompactMap = stringValues.compactMap { string in
return Int(string)
}
intValueWithCompactMap
// [1, 3]
/// for loop로 위에 map과 compact map을 생각해보면
// Map 을 for loop로
var listCanContainNil: [Int?] = []
for string in stringValues {
let int = Int(string)
listCanContainNil.append(int)
}
listCanContainNil
// [nil, 1, 3, nil]
// CompactMap을 for loop로
var listDoNotContainNil: [Int] = []
for string in stringValues {
if let int = Int(string) {
listDoNotContainNil.append(int)
}
}
listDoNotContainNil
// [1, 3]
for string in strArray{
string += "box"
}
//한줄로 쓰기 가능.
var resultArray = strArray.map({$0+"box"})
strArray안의 모든 값들 뒤에 box를 붙이기
Filter
//말 그대로 특정 조건을 통과한 element들을 모아서 Array로 반환하는 함수
var filteredArray = moneyArray.filter({$0<1_1000})
인자는 Bool이다.
특정 조건에 부합하는 요소들만 모아서 Array로 반환함.
Reduce
//초기 값이 0인것에다가 계속 moneyArray의 값을 누적 더해간다.
let moneyArray: [Int] = [1,2,3]
var sum = moneyArray.reduce(0, combine: +) //결과값 6
또는
var sum = moneyArray.reduce(0) { $0 + $1 }
var aString = resultArray.reduce("", combine: {$0 + $1 + "!!"})
//또는
var aString = resultArray.reduce("") {$0 + $1 + "!!"}
728x90
반응형
'🌙 iOS 스터디 > Swift' 카테고리의 다른 글
[Swift] 카메라 앱 개발 (0) | 2021.05.16 |
---|---|
[Swift] 외부 라이브러리 가져다 쓰는 방법 3가지 (0) | 2021.03.10 |
[Swift] @escaping Closure (0) | 2021.03.09 |
[Swift] Instance Method 와 Type Method (0) | 2021.03.09 |
[Swift] GCD Dispatch Queue (0) | 2021.03.03 |