0Pricing
Swift Academy · 강의

순수 함수와 부작용 없는 설계

같은 입력에 항상 같은 출력을 반환하는 함수를 작성합니다.

순수 함수와 부작용 없는 설계은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

순수 함수는 동일한 입력에 대해 항상 동일한 출력을 만들며 부수 효과를 일으키지 않습니다. 순수 함수는 Swift 함수형 프로그래밍의 기본 구성 요소입니다.

순수 함수의 정의

다음 조건을 만족하면 함수는 순수합니다: • 동일한 입력은 항상 동일한 출력을 생성함 • 관찰 가능한 부수 효과가 없음(변경, 입출력, 전역 상태가 없음) ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } // pure ```

비순수 함수 예시

```swift var total = 0 func addToTotal(_ n: Int) { total += n } // impure — mutates global ``` 이 함수를 `5`와 함께 두 번 호출하면 서로 다른 상황에서 호출할 경우 결과가 달라집니다.

참조 투명성

프로그램의 동작을 바꾸지 않고 순수 함수 호출을 그 결과로 대체할 수 있습니다: ```swift let result = add(2, 3) // same as writing 5 ```

순수 함수의 장점

• 테스트하기 쉬움 — 설정과 정리 작업이 필요 없음 • 병렬 처리에 안전함 — 공유 상태가 없음 • 합성 가능함 — 부수 효과를 걱정하지 않고 연결할 수 있음 • 캐시 가능함 — 메모이제이션을 안전하게 사용할 수 있음

Swift의 값 유형이 순수성을 높이는 방식

구조체 메서드는 복사본을 받기 때문에 자연스럽게 순수성을 지향합니다: ```swift struct Vector { var x, y: Double } func scaled(_ v: Vector, by f: Double) -> Vector { Vector(x:v.x*f, y:v.y*f) } ```

부수 효과 격리하기

부수 효과를 시스템의 경계로 밀어내십시오: ```swift // Pure core logic: func processOrders(_ orders: [Order]) -> Invoice { ... } // Impure at the edge: func run() { let inv = processOrders(load()); save(inv) } ```

순수 함수와 테스트

```swift func test() { let result = add(2, 3) assert(result == 5) // no mocks needed! } ``` 순수 함수에는 모의 객체가 필요하지 않습니다. 호출하고 검증하기만 하면 됩니다.

실제 사례

```swift func discountedPrice(base: Double, discount: Double) -> Double { base * (1 - discount) } let final = discountedPrice(base: 100, discount: 0.2) // 80.0 ```

순수 함수 합성하기

```swift func double(_ n: Int) -> Int { n * 2 } func addOne(_ n: Int) -> Int { n + 1 } let transform: (Int) -> Int = { addOne(double($0)) } print(transform(5)) // 11 ```

빠른 확인

모의 객체 없이 함수를 쉽게 테스트할 수 있게 하는 속성은 무엇입니까?

복습

핵심 내용: • 순수 함수: 동일한 입력 → 동일한 출력, 부수 효과 없음 • 참조 투명성으로 치환이 가능함 • 부수 효과를 시스템 경계로 밀어냄 • 순수 함수는 매우 쉽게 테스트하고 병렬 처리할 수 있음 다음 주제: 고차 함수

자주 묻는 질문

“순수 함수와 부작용 없는 설계” 강의는 무료인가요?

네 — “순수 함수와 부작용 없는 설계” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“순수 함수와 부작용 없는 설계”에서 뭘 배우나요?

같은 입력에 항상 같은 출력을 반환하는 함수를 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“순수 함수와 부작용 없는 설계” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 순수 함수와 부작용 없는 설계
  2. 고차 함수: map, flatMap, compactMap
  3. 함수 조합과 데이터 처리 흐름
  4. 효율적인 지연 시퀀스
← Swift Academy(으)로 돌아가기