Computer >> 컴퓨터 >  >> 스마트폰 >> iPhone

Swift의 함수 구성에 대한 빠른 소개

프로그래머는 매일 함수를 접합니다. 함수는 특별한 유형의 관계를 나타냅니다. 함수가 취하는 모든 입력 값은 일부 출력 값과 연결됩니다. 따라서 보다 일반적인 방식으로 함수는 일부 입력 값을 하나의 출력 값에 매핑하는 규칙입니다.

함수 합성의 기본 개념은 한 함수를 다른 함수의 결과에 적용하는 것입니다. 따라서 함수를 하나의 함수로 결합하는 수학적 개념입니다.

Swift의 함수 구성에 대한 빠른 소개
함수 구성

시작하기

수학적 개념과 함께 토론해 봅시다. 위의 다이어그램에서 "f"와 "g"는 두 가지 기능입니다. 다음과 같이 기능을 나타낼 수 있습니다.

f: A -> Bg: B -> C

이 두 함수를 합성하면 "g o f"(g of f라고 할 수 있음)로 나타낼 수 있습니다.

(g o f): A -> C such that (g o f)(a) = g(f(a)) for all a in A

간단한 예를 들어 더 자세히 살펴보겠습니다.

Let f(a) = 2a + 3 & g(a) = 3a + 5, then function composition
(g o f)(a) = g(f(a)) = 3(f(a)) + 5 = 3(2a + 3) + 5 = 6a + 14

이 개념은 수학에만 적용되는 것이 아니라 프로그래밍 언어에도 적용할 수 있습니다. 이러한 언어를 함수형 프로그래밍 언어라고 합니다. 이 개념을 이해하면 코드 가독성이 향상되고 다른 프로그래머가 더 쉽게 이해할 수 있습니다.

함수형 프로그래밍 언어로서의 Swift 소개

이제 좋은 소식은 swift도 함수형 프로그래밍 언어라는 것입니다. Swift 프로그래밍에서 함수는 가장 중요한 역할을 하므로 매일 상호작용하게 됩니다. Swift 함수는 값을 반환할 수 있으며 반환된 값을 다른 함수에 대한 입력으로 사용할 수 있습니다. 이것은 일반적인 프로그래밍 방식입니다.

swift에서 함수 구성 구현

정수 배열이 있고 출력이 고유한 짝수 정수의 제곱 배열이 되기를 원한다고 가정합니다. 따라서 일반적으로 아래와 같은 기능을 구현합니다.

이 코드는 올바른 출력을 제공하지만 보시다시피 코드의 가독성은 좋지 않습니다. 또한 order를 호출하는 함수는 우리가 원하는 것과 정반대처럼 보이며 일부 새로운 프로그래머에게는 혼란을 줄 수 있습니다. 이 코드 블록은 분석하기 어렵습니다.

그래서 여기 위의 모든 문제에서 우리를 구출하는 함수 구성이 있습니다. 제네릭, 클로저 및 중위 연산자를 활용하여 함수 구성을 달성할 수 있습니다.

위의 코드 블록에서 어떤 일이 일어나는지 살펴보겠습니다.

  1. 맞춤 중위 연산자 ">>>"를 선언했습니다. + 연산자와 마찬가지로 연관성과 우선 순위를 남겼습니다.
  2. 중위 연산자의 이름과 이름이 같은 함수를 선언했습니다. 이 함수는 세 개의 제네릭 T, U, V를 사용하고 두 개의 클로저를 입력 매개변수로 사용합니다.
  3. 왼쪽 매개변수는 클로저이며 T 유형의 입력을 받고 U 유형의 출력을 반환합니다.
  4. 오른쪽 매개변수도 클로저이며 U 유형의 입력을 받고 V 유형의 출력을 반환합니다.
  5. 이제>>> 함수는 (T) → V 유형의 함수 또는 클로저를 반환합니다. 출력 클로저는 유형 T의 입력을 받고 유형 V의 출력을 반환합니다. 여기서 왼쪽의 출력 매개변수는 올바른 매개변수의 입력입니다.
left :  (T) -> U right: (U) -> V
Output Type: (T) -> V

함수 구성의 수학적 표현을 이해하면 Swift의 구현과 정확히 동일하다는 것을 알 수 있습니다.

6. 함수 본문에서 왼쪽 매개변수에 오른쪽 매개변수의 결과를 반환합니다.

이제 동일한 결과(고유한 짝수 정수의 제곱 배열)를 원하면 함수 구성으로 이를 수행할 수 있습니다.

동일한 결과를 반환하는 일련의 함수입니다. 기능 순서는 이제 인간이 생각할 수 있는 것과 유사합니다. 가독성이 더 좋고 모든 사람이 더 쉽게 이해할 수 있습니다.

읽어주셔서 감사합니다!