2.6.4 함수 일반화
함수란 특정 문제를 푸는 논리나 프로세스 집합을 잘 정의하여 추상화한 것이다. 개발자라면 보통 광범위한 경우에 적용이 가능하도록 함수를 일반화하려고 할 것이다. 비슷한 문제가 있다면 각각에서 특수한 함수를 따로 만들지 않고, 일반화된 한 가지 함수로 모든 문제를 손쉽게 해결하고 싶을 것이다.
함수를 광범위하게 적용이 가능하도록 만드는 것을 일반화라고 한다. R처럼 타이핑이 강하지 않은 프로그래밍 언어에서는 쉽게 함수를 일반화할 수 있다. 하지만 구현이 잘못되면 오류가 발생할 수 있다.
add()를 좀 더 일반화하여 다양한 기본 산술 연산을 처리할 수 있게 calc 같은 또 다른 함수를 정의할 수 있다. 이 새로운 함수는 두 벡터 x, y와 사용자가 원하는 연산을 입력받는 문자형 벡터 type, 이렇게 세 가지 인수를 받는다.
다음 코드는 뒤에서 다룰 흐름 제어를 활용하여 이러한 함수를 구현한다. 이 코드에서 평가할 표현식은 type 값에 따라 결정된다.
> calc <- function(x, y, type) { + if (type == "add") { + x + y + } else if (type == "minus") { + x - y + } else if (type == "multiply") { + x * y + } else if (type == "divide") { + x / y + } else { + stop("Unknown type of operation") + } + }