728x90
반응형
순수 함수(Pure Function)에 관해 알아보도록 하겠습니다.
함수형 프로그래밍
Funtional Programming은 함수를 중심으로 Side-Effect가 없도록 프로그래밍을 하는 것을 말합니다.
여기서 말하는 함수는 순수함수를 말합니다.
순수함수 (Pure Function)
- input : 어떠한 함수에서 외부의 데이터를 직접적으로 사용하지 않고, 파라미터로 받습니다.
- output : input값에 의해 output이 결정되기 때문에 외부의 값들이 변경되더라도 함수 자체에는 외부에 영향을 받지 않기 때문에 Side-Effect가 없다는 것입니다.
var name = “jinShine”
func getName() -> String {
return name
}
위에 getName함수는 외부에 있는 name에 의해 영향을 받습니다.
지금은 간단한 예제이지만 복잡한 프로젝트에서 다른 외부의 변수들을 함수내에 직접적으로 가져다 사용하면 Side-Effect가 존재할 가능성이 다분하죠.
이것을 순수 함수로 바꿔보겠습니다.
func getName(_ name: String) -> String {
return name
}
느낌이 오시나요?
함수 자체에 파라미터로 받은 name의 데이터로만 결정되기 때문에 외부의 영향을 전혀 받지않고, 파라미터의 입력값에 대해서만 동일한 결과를 나타낼수있죠.
하지만!
지금 받은 느낌을 살짝 깨보도록 하겠습니다.
let name = "jinShine"
func getName() -> String {
return name
}
결론부터 이야기하자면 위에 코드도 순수함수입니다.
var로 되어있는 mutable데이터는 외부에서 가져다 쓰면 변경될 가능성이 있어 Side-Effect가 발생할 수 있고, let으로 정의 되어있는 변경 불가능한 immutable 데이터를 외부에서 사용해도 input에 의해 동일한 ouput을 내기 때문에 순수함수입니다.
다음은 합성함수 (Composition)에 관해 포스트 하겠습니다.
반응형
'Swift' 카테고리의 다른 글
[Swift] 2. 예제로 알아보는 함수의 합성(Composition) (0) | 2019.08.12 |
---|---|
[Swift] Swift Style Guide 정리 (1) | 2019.07.29 |
[Swift] 문자열 다루기 (0) | 2019.07.25 |
[Swift] 고차함수(2) - map, flatMap, compactMap (0) | 2019.07.25 |
[Swift] 고차함수(1) - forEach, filter, reduce (0) | 2019.07.25 |