더북(TheBook)

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")
+     }
+ }
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.