함수 호출하기

함수 호출하기 (Calling Functions)

함수는 특정 계산에 이름을 붙인 것이에요. 이름이 있기 때문에 프로그램의 어느 지점에서든 그 이름으로 호출할 수 있죠. 예를 들어 sqrt 함수는 어떤 수의 제곱근을 계산해요.

출처: 문서

본문

고정된 함수 집합은 내장(built-in)되어 있어서 모든 Octave 프로그램에서 사용할 수 있어요. sqrt 함수도 그중 하나예요. 그 외에도 여러분이 직접 함수를 정의할 수 있어요.

함수를 사용하는 방법은 함수 호출 표현식(function call expression)이에요. 이는 함수 이름 뒤에 괄호 안의 인자 목록이 따라붙는 형태예요. 인자는 함수가 수행할 계산의 재료가 되는 표현식들이에요. 인자가 두 개 이상이면 쉼표로 구분해요. 인자가 없으면 괄호를 생략할 수 있지만, 함수 호출을 의도했다는 것을 명확히 하려면 괄호를 넣는 게 좋아요. 몇 가지 예시를 볼게요.

sqrt (x^2 + y^2)      # One argument
ones (n, m)           # Two arguments
rand ()               # No arguments

각 함수는 특정 개수의 인자를 기대해요. 예를 들어 sqrt 함수는 제곱근을 구할 숫자 하나를 반드시 인자로 받아야 해요.

sqrt (argument)

일부 내장 함수는 사용 방식에 따라 가변 개수의 인자를 받아요. 그리고 제공된 인자 개수에 따라 동작이 달라지죠.

다른 표현식과 마찬가지로 함수 호출도 값을 가져요. 이 값은 주어진 인자에 기반해 함수가 계산해요. 함수는 특정 변수의 값을 할당하거나 입출력 연산을 수행하는 것 같은 부작용(side effect)도 가질 수 있어요.

대부분의 언어와 달리 Octave의 함수는 여러 개의 값을 반환할 수 있어요. 예를 들어 다음 문장은

[u, s, v] = svd (a)

행렬 a의 특이값 분해를 계산하고, 세 결과 행렬을 u, s, v에 각각 할당해요.

다중 할당 표현식의 왼쪽은 그 자체로 표현식 목록, 즉 잠재적으로 인덱스 표현식으로 수식되는 변수 이름들의 목록이에요.

더 알아보기

  • 값에 의한 호출(Call by Value), 재귀(Recursion), 핸들을 통한 접근(Access via Handle)에 대한 내용을 이어서 보면 좋아요.