[swift] 함수형 프로그래밍에서 제네릭을 어떻게 활용하는가?

예를 들어, 제네릭을 사용하여 배열의 요소를 필터링하거나 변환하는 함수를 작성할 수 있습니다. 이 함수는 배열의 요소 타입에 관계없이 동작하므로 Int, String, Double과 같은 다양한 타입의 배열에 대해 동일한 방식으로 동작합니다.

아래는 Swift에서 제네릭을 사용하여 배열을 필터링하는 예시입니다.

func filterArray<T>(_ array: [T], _ isIncluded: (T) -> Bool) -> [T] {
    var result: [T] = []
    for element in array {
        if isIncluded(element) {
            result.append(element)
        }
    }
    return result
}

let numbers = [1, 2, 3, 4, 5]
let evenNumbers = filterArray(numbers) { $0 % 2 == 0 }
print(evenNumbers) // 출력: [2, 4]

위의 예제에서 filterArray 함수는 제네릭 타입 T를 사용하여 모든 종류의 배열에 대해 필터링을 수행할 수 있습니다.

이와 같이 제네릭을 활용하면 함수형 프로그래밍에서 다양한 데이터 타입에 대해 일반화된 함수를 작성할 수 있으며, 코드의 재사용성과 안정성을 향상시킬 수 있습니다.