Programming/Swift

[Swift4.2] Swift로 함수형 프로그래밍 시작하기 - Pure Function

devssun 2019. 2. 15. 23:45
728x90
반응형


최근 듣는 강의 - 인프런 Swift로 함수형 프로그래밍 시작하기

몇개 안들었지만 좋은 강의라는 게 느껴집니다.


Pure function

  • 특정 input에 대해서 항상 동일한 output을 반환하는 함수
  • output을 만드는데 input만을 사용한다는 의미
  • 함수 외부의 값을 변경하거나 저장하는 등 사용하지않아 side-effect가 없다



side-effect (부작용)
함수가 결과 값 이외에 외부의 값을 변경하게 되면 부작용이 있다고 할 수 있음
함수형 프로그래밍을 통해 이 부작용을 최소화할 수 있음
만일 함수가 외부 값을 변경하거나, 혹은 외부 값을 참조해서 output을 결정하게 되면 해당 변수/함수의 예상치 못한 값 변경이 있다면 에러가 발생할 수 있는 상황이 생기게 된다.



Pure Function 강의를 보며 얼마나 이상한 함수를 작성하고 있었는 가를 알게 되었음… 노력하자!!!



ex) side-effect가 존재하는 함수

var name = "swift"
func makeHello() {
  // 함수 외부의 name값을 사용하기 때문에 side-effect가 존재한다
  return "Hello to \(name)"
}

pure function으로 변경하기

func makeHello(_ name: String) {
  // 특정 input에 대해 항상 동일한 output 반환
  // 함수 외부 변수를 사용하지않아 side-effect가 없다
  return "Hello to \(name)"
}

반응형