Main Content

로컬 함수(Local Function)

여기에서는 로컬 함수라는 용어에 대해 설명하고 로컬 함수를 생성하고 사용하는 방법을 보여줍니다.

MATLAB® 프로그램 파일은 둘 이상의 함수에 대한 코드를 포함할 수 있습니다. 함수 파일에서 파일 내 첫 번째 함수를 메인 함수라고 합니다. 메인 함수는 다른 파일의 함수에서 인식할 수 있으며 또는 사용자가 명령줄에서 직접 호출할 수 있습니다. 파일 내에 있는 이외의 추가 함수들은 로컬 함수라고 하며, 로컬 함수는 메인 함수 뒤에 어떤 순서로든 올 수 있습니다. 로컬 함수는 동일 파일 내에 있는 다른 함수에서만 인식될 수 있습니다. 이는 다른 프로그래밍 언어의 서브루틴과 동일하며, 부 함수라고도 합니다.

스크립트 파일에서 로컬 함수를 생성할 수도 있습니다. 로컬 함수는 조건부 컨텍스트(예: if 문 또는 for 루프) 내를 제외한 파일의 어느 위치에나 추가할 수 있습니다. 자세한 내용은 스크립트에 함수 추가하기 항목을 참조하십시오.

R2024a 이전: 스크립트의 로컬 함수는 파일 맨 끝, 즉 스크립트 코드의 마지막 라인 뒤에 정의되어야 합니다.

예를 들어, 메인 함수 mystats, 두 개의 로컬 함수 mymeanmymedian을 포함하는 mystats.m이라는 함수 파일을 생성해 보겠습니다.

function [avg, med] = mystats(x)
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);
end

function a = mymean(v,n)
% MYMEAN Example of a local function.

a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Another example of a local function.

w = sort(v);
if rem(n,2) == 1
    m = w((n + 1)/2);
else
    m = (w(n/2) + w(n/2 + 1))/2;
end
end

로컬 함수 mymeanmymedian은 입력 목록에 대한 평균 및 중앙값을 계산합니다. 메인 함수 mystats는 목록의 길이 n을 구하고 이를 로컬 함수에 전달합니다.

명령줄 또는 다른 파일의 함수에서 로컬 함수를 호출할 수는 없지만 help 함수를 사용하여 해당 도움말에 액세스할 수는 있습니다. 파일의 이름과 로컬 함수의 이름을 모두 지정합니다. 이때 > 문자를 사용하여 이름을 구분합니다.

help mystats>mymean
  mymean Example of a local function.

현재 파일의 로컬 함수는 다른 파일의 함수와 클래스 메서드보다 우선합니다. 즉, 프로그램 파일 내의 함수 또는 메서드를 호출하면 MATLAB이 다른 메인 함수를 찾기 전에 이 함수가 로컬 함수인지 여부를 검사합니다. 따라서 다른 파일에 함수의 원본을 유지하면서 그 함수에 대한 대체 버전을 생성할 수 있습니다.

로컬 함수를 포함하여 모든 함수는 자체 작업 공간을 가지며, 이 작업 공간은 기본 작업 공간과 별개입니다. 로컬 함수는 다른 함수에서 사용되는 변수를 인수로 전달받지 않는 한 그 변수에 액세스할 수 없습니다. 이와 대조적으로, 중첩 함수(다른 함수 내에 완전히 포함되는 함수)는 중첩 함수를 감싸는 함수에 사용되는 변수에 액세스할 수 있습니다.

참고 항목

관련 항목