Language/Swift-Basic

Swift - 고차함수 (Higher Order Functions)

Jessi :D 2022. 3. 4. 06:21

매개변수로 함수 혹은 클로저를 받고, 받았던 녀석을 반환하는 함수

콜렉션에 들어가는 배열, 딕셔너리, 셋에 Sorted, Map, Filter, Reduce 등이 빌트인 되어있다.

 

함수

getName → 메소드인데 매개변수로서 클러저를 받고 그 클로저를 반환하는데, 반환하면서 형태를 변환하거나 한다.

func getName(_ name: String) -> String {
	return "내 이름은 \(name)"
}

// 함수 자체를 매개변수로 넣고
func sayHello( getName: (String) -> String, name: String) -> String {
	// 넣은 함수를 반환
	return getName(name)
}

let resultOne = sayHello(getName: getName(_:), name: "만쥬")
// 내 이름은 만쥬

 

 

콜렉션

배열

let numbers = [3, 7, 4, -2, 9, 6, 10, 1]
// [3, 7, 4, -2, 9, 6, 10, 1]

// Int 를 받아서 String으로 변환해서 리턴
let stringNumbers : [String] = numbers.map { (aNumber: Int) -> String in
	return "\(aNumber) !!"
	//["3 !!", "7 !!", "4 !!", "-2 !!", "9 !!", "6 !!", "10 !!", "1 !!"]
}

// 짝수
// Int 배열을 가져와서 짝수만 반환
let evenNumbers : [Int] = numbers.filter { aNumber in
	return aNumber % 2 == 0
	// [4, -2, 6, 10]
}

// 홀수
// Int 배열을 가져와서 홀수만 반환
let oddNumbers : [Int] = numbers.filter { aNumber in
	return aNumber % 2 != 0
	// [3, 7, 9, 1]
}

 

 

반응형