고차함수 (Higher Order Functions)

고차 함수는 하나 이상의 함수를 인자로 사용하거나 그 결과로 함수를 반환하는 함수입니다.
Swift의 고차함수는 forEach, map, CompactMap, flatMap, filter, reduce, sort 및 sorted 가 있습니다.

ForEach

forEach는 배열의 모든 요소를 반복하고 반환값이 없습니다.

let coins = [10, 20, 30, 50, 100]

// for in
for coin in coins {
    print("\(coin)원")
}

// forEach
coins.forEach { (coin) in
    print("\(coin)원")
}

// forEach 축약형
coins.forEach { print("\($0)원")}

“forEach”는 “for in”처럼 작동하지만 기본적인 차이점은 breakcontinue 문을 사용하여 forEach의 클로저를 종료 할 수 없다는 것입니다.

map

map은 배열의 모든 요소를 반복하고 업데이트 된 배열을 반환합니다.

let coins = [10, 20, 30, 50, 100]

var coinStrings: [String] = []
for coin in coins {
    coinStrings.append("\(coin)원")
}
print(coinStrings)

// map
let map = coins.map { (coin) -> String in
    "\(coin)원"
}
print(map)

// map 축약형
let short_map = coins.map { "\($0)원"}
print(short_map)

compactMap

compactMap은 배열의 모든 요소를 반복하고 compactMap 본문 내부에 작성된 조건을 만족하는 요소의 배열을 반환합니다. nil 값을 생성하는 모든 요소는 제외됩니다.

let coins = ["10", "20", "30원", "50", "100"]

var coinStrings: [String] = []
for coin in coins {
    if let coin = Int(coin) {
        coinStrings.append("\(coin)원")
    }
}
print(coinStrings)

// compactMap
let compactMap = coins.compactMap { coin in
    Int(coin)
}
print(compactMap)

// compactMap 축약형
let short_map = coins.compactMap { Int($0) }
print(short_map)

flatMap

flatMap은 2차원 배열을 1차원 배열로 변환합니다.

let arrayOfCoins = [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]

let arrayOfCoin = arrayOfCoins.flatMap { coins in
    coins
}
print(arrayOfCoin)

let arrayOfCoinShort = arrayOfCoins.flatMap { $0 }
print(arrayOfCoinShort)

filter

filter는 배열의 모든 요소를 반복 하면서 필터 본문 내부에 작성 된 조건을 충족하는 요소로만 업데이트 된 배열을 반환합니다.

let coins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let lessThanSix = coins.filter { coin in
    coin < 6
}
print(lessThanSix)

let lessThsnSixShort = coins.filter { $0 < 6 }
print(lessThsnSixShort)

reduce

reduce는 배열의 모든 요소를 반복하고 모든 요소의 결합 된 값을 가진 객체를 반환합니다.

let coins = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let sumOfCoins = coins.reduce(0) { (result, coin) -> Int in
    result + coin
}
print(sumOfCoins)

let sumOfCoinsShort = coins.reduce(0) { $0 + $1 }
print(sumOfCoinsShort)

sort(by:) and sorted(by:)

sort (by :)는 클로저 본문에 쓰여진 조건에 따라 모든 요소를 정렬합니다.

sorted (by :)는 클로저 본문에 쓰여진 조건에 따라 모든 요소를 정렬하고 새로운 배열을 반환합니다.

var coins = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

let sortedCoins = coins.sorted()
print(sortedCoins)

let sortedCoins2 = coins.sorted { (a, b) -> Bool in
    a < b
}
print(sortedCoins2)

coins.sort()
print(coins)

coins.sort { (a, b) -> Bool in
    a < b
}
print(coins)

다음은 sort (by 🙂 및 sorted (by :)에 대한 축약구문입니다.

var coins = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

let sortedCoins = coins.sorted { $0 < $1 }
print(sortedCoins)

coins.sort { $0 < $1 }
print(coins)

에 발행했습니다
SWIFT(으)로 분류되었습니다

aaron님이 작성

아무것도 안해도 시간은 흐른다.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다