주요 콘텐츠

헬퍼 함수를 사용하여 앱에서 코드 재사용하기

헬퍼 함수는 사용자가 앱에서 사용하기 위해 정의하는 MATLAB® 함수입니다. 헬퍼 함수를 정의하면 앱 코드의 여러 위치에서 이를 호출할 수 있습니다. 예를 들어, 앱 사용자가 슬라이더에서 숫자를 변경하거나 드롭다운 목록에서 항목을 선택하면 이에 따라 플롯을 업데이트하는 헬퍼 함수를 호출할 수 있습니다. 헬퍼 함수를 만들면 공통 명령의 소스를 단일화할 수 있기 때문에 중복 코드를 유지할 필요가 없습니다.

앱 디자이너 또는 MATLAB 프로그램 파일에서 앱의 헬퍼 함수를 정의할 수 있습니다. 함수 코드와 앱이 어떻게 상호 작용하는지에 따라 방식을 선택하십시오.

방식사용하는 경우
앱 디자이너에서 헬퍼 함수 생성.
  • 코드가 사용자 인터페이스를 업데이트하거나 앱의 컴포넌트에 액세스해야 하는 경우.

  • 앱이 실행 중일 때만 함수를 실행하려는 경우.

MATLAB 프로그램 파일(.m)에서 헬퍼 함수 생성.
  • 이미 MATLAB 스크립트 또는 함수로 작성된 코드가 있으며, 그 코드를 앱에서 실행하고자 하는 경우.

  • 여러 개의 독립적 앱 간에 또는 MATLAB의 프로젝트 간에 코드를 공유하려는 경우.

  • 코드가 사용자 인터페이스의 어떤 부분에서도 데이터를 직접 업데이트하거나 읽어오지 않는 경우.

  • 앱과는 별개로 코드를 실행하거나 테스트하려는 경우.

앱 디자이너에서 헬퍼 함수 만들기

앱 디자이너에서 만들 수 있는 헬퍼 함수는 두 가지 유형이 있습니다. 프라이빗 함수는 앱 내부에서만 호출할 수 있고, 퍼블릭 함수는 앱 내부 또는 외부에서 호출할 수 있습니다. 프라이빗 함수는 단일 창 앱에서 일반적으로 사용되는 반면, 퍼블릭 함수는 다중 창 앱에서 흔히 사용됩니다.

앱 디자이너의 코드 보기에서 헬퍼 함수를 만듭니다. 툴스트립의 편집기 탭에서 함수를 클릭한 다음 프라이빗 함수 또는 퍼블릭 함수를 선택합니다.

Function drop-down list with options "Private Function" and "Public Function"

항목을 선택하면 앱 디자이너가 앱 코드 내에 템플릿 함수를 만들고 이 함수 본문에 커서를 놓습니다. 그러면 사용자가 함수 이름과 인수를 업데이트하고 함수 본문에 코드를 추가할 수 있습니다. app 인수를 필수로 제공해야 하며, app 입력을 사용하여 앱의 컴포넌트와 속성에 액세스할 수 있습니다. app 인수 뒤에 원하는 인수를 추가로 포함시킬 수 있습니다.

예를 들어, 아래의 updatePlot 함수는 peaks 함수의 곡면 플롯을 만듭니다. 함수는 플롯에 표시할 샘플 개수를 지정하는 추가 인수 n을 받습니다.

function updatePlot(app,n)
    surf(app.UIAxes,peaks(n));
    colormap(app.UIAxes,winter);
end

프라이빗 함수 호출하기

함수를 정의한 앱 내에서만 함수를 호출하고자 하는 경우 프라이빗 함수를 정의합니다. 프라이빗 함수는 앱 내의 어디서나 호출할 수 있습니다.

예를 들어 앱에 포함된 슬라이더 컴포넌트와 드롭다운 컴포넌트가 동일한 플롯의 파라미터를 제어하는 경우, updatePlot 함수를 프라이빗 함수로 정의하십시오. 두 컴포넌트 값 중 하나가 변경되면 컴포넌트 콜백 함수에서 updatePlot 함수를 호출하여 플로팅된 데이터를 업데이트합니다.

function SliderValueChanged(app,event)
    value = app.Slider.Value;
    updatePlot(app,value)        
end

function DropDownValueChanged(app,event)
    value = app.DropDown.Value;
    num = str2double(value);
    updatePlot(app,num)        
end

퍼블릭 함수 호출하기

앱이 실행 중일 때 앱 외부에서 함수를 호출하고자 하는 경우 퍼블릭 함수를 정의합니다. 퍼블릭 함수는 여러 앱 파일로 구성된 다중 창 앱을 사용할 때 유용합니다. 여러 앱 중 한 앱에서 정의된 퍼블릭 함수를 또 다른 앱에서 호출할 수 있습니다.

예를 들어 메인 앱이 있고, 이 메인 앱에 플롯이 있는 보조 앱을 생성하는 버튼이 있다면, updatePlot 함수를 퍼블릭 함수로 정의합니다. ButtonPushedFcn 콜백에서 updatePlot 함수를 호출하여 메인 앱에서 플롯을 업데이트합니다.

function CreatePlotButtonPushed(app,event)
    secondaryApp = MyPlotApp;
    updatePlot(secondaryApp,10)       
end

다중 창 앱에 대한 자세한 내용은 앱 디자이너에서 다중 창 앱 만들기 항목을 참조하십시오.

헬퍼 함수 관리하기

코드 브라우저를 사용하여, 앱 디자이너에서 정의한 헬퍼 함수를 관리할 수 있습니다. 예를 들어 코드 브라우저를 사용하여 다음 작업을 수행할 수 있습니다.

  • 앱 디자이너에서 정의한 모든 헬퍼 함수 보기 — 코드 보기코드 브라우저에서 함수 탭을 선택합니다.

  • 헬퍼 함수 검색 — 함수 탭의 상단에 있는 검색 상자를 사용합니다.

  • 헬퍼 함수 이름 바꾸기 — 함수 이름을 더블 클릭하고 새 이름을 입력합니다. 이름을 변경하면 앱 디자이너가 앱 코드에서 자동으로 함수에 대한 모든 참조를 업데이트합니다.

  • 헬퍼 함수로 이동 — 함수 이름을 클릭하여 함수 정의 부분으로 스크롤합니다. 함수 이름을 마우스 오른쪽 버튼으로 클릭하고 이동을 선택하면 커서가 이 함수로 이동합니다.

  • 헬퍼 함수 삭제 — 함수 이름을 마우스 오른쪽 버튼으로 클릭하고 Delete 키를 선택합니다.

MATLAB 프로그램 파일에서 헬퍼 함수 만들기

여러 개의 독립적 앱 또는 프로젝트 간에 코드를 재사용하려면 앱 디자이너 외부에서 MATLAB 프로그램 파일에 헬퍼 함수를 정의하십시오. 스크립트에 기존 코드가 있는 경우 스크립트를 함수로 변환할 수 있습니다. 자세한 내용은 스크립트와 함수 비교 항목을 참조하십시오.

앱이 호출할 수 있는 새 함수를 만들려면 다음 단계를 따르십시오.

  1. MATLAB에서 새 함수 파일을 만듭니다. 자세한 내용은 파일 내에서 함수 생성하기 항목을 참조하십시오.

  2. 함수가 앱으로부터 필요로 하는 데이터에 대한 함수 입력값(예: 컴포넌트 값)을 정의합니다.

  3. 앱이 함수로부터 필요로 하는 데이터에 대한 함수 출력값(예: 계산 결과)을 정의합니다.

  4. 앱 파일이 액세스할 수 있는 위치에 함수 파일을 추가합니다(예: 앱 파일과 동일한 폴더 또는 MATLAB 검색 경로).

그런 다음, 앱 코드에서 함수를 호출할 수 있습니다.

예를 들어 선택한 날짜와 현재 날짜 간의 일수 차를 표시하려면 날짜 계산을 수행하는 MATLAB 함수를 만들 수 있습니다. 앱 파일과 동일한 폴더에 calculateDate.m이라는 함수 파일을 만듭니다. 날짜를 받아 현재 날짜와 해당 날짜 간의 일수 차를 반환하는 함수를 정의합니다.

function numdays = calculateDate(date)
dur = date - datetime("today");
numdays = days(dur);
end

앱 디자이너의 앱 코드에서 이 함수를 호출합니다. 예를 들어 앱에 날짜 선택기가 있는 경우 날짜 선택기가 앱을 업데이트하도록 ValueChangedFcn 콜백에서 calculateDate 함수를 호출합니다.

function DatePickerValueChanged(app,event)
    value = app.DatePicker.Value;
    numdays = calculateDate(value);
    app.CountdownLabel.Text = "Your date is " + numdays + " days away";
end

예제: 플롯을 업데이트하는 헬퍼 함수

이 앱은 헬퍼 함수를 사용하여 플롯 초기화와 업데이트를 모두 수행하는 방법을 보여줍니다. 앱은 시작될 때 startupFcn 콜백 끝에서 updatePlot 프라이빗 헬퍼 함수를 호출하여 플롯을 초기화합니다. 또한 사용자가 테이블의 값을 변경하거나 열을 정렬하는 경우에도 UITableDisplayDataChanged 콜백이 updatePlot 함수를 호출하여 동일한 플롯을 업데이트합니다.

참고 항목

도움말 항목