Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

함수 우선 순위(Function Precedence Order)

여기에서는 현재 범위에 있는 여러 함수가 동일한 이름을 가지는 경우 MATLAB®이 호출할 함수를 결정하는 방법을 설명합니다. 현재 범위는 현재 파일, 현재 실행 중인 함수와 관련된 프라이빗 하위 폴더(선택 사항), 현재 폴더, MATLAB 경로를 포함합니다.

MATLAB은 다음 우선 순위를 사용합니다.

  1. 변수

    이름과 일치하는 함수를 찾기 전에 MATLAB은 현재 작업 공간에 해당 이름을 가진 변수가 있는지 확인합니다.

    참고

    사용자가 함수와 동일한 이름을 갖는 변수를 생성해 둔 경우 사용자가 메모리에서 이 변수를 지우기 전까지는 MATLAB이 이 함수를 실행할 수 없습니다.

  2. 이름이 명시적으로 가져온 이름과 일치하는 함수 또는 클래스

    import 함수를 사용하면 복합형 이름(점으로 결합된 여러 부분으로 이루어진 이름)을 가진 함수를 복합형 이름의 마지막 부분만 사용하여 호출할 수 있습니다. 함수 이름이 명시적인(즉, 와일드카드 기반이 아닌) 가져온 함수와 일치하면 MATLAB은 가져온 복합형 이름을 사용하며, 동일한 이름을 가진 다른 모든 함수보다 이 함수를 우선적으로 실행합니다.

  3. 현재 함수 내 중첩 함수

  4. 현재 파일 내 로컬 함수

  5. 이름이 와일드카드 기반의 가져온 이름과 일치하는 함수 또는 클래스

    함수 이름이 와일드카드 기반의 가져온 함수와 일치하면 MATLAB은 가져온 복합형 이름을 사용하며 중첩 함수와 로컬 함수를 제외하고는 동일한 이름을 가진 다른 모든 함수보다 이 함수를 우선적으로 실행합니다.

  6. 프라이빗 함수

    프라이빗 함수는 현재 실행 중인 파일의 폴더 바로 아래에 있는 private이라는 하위 폴더에 있는 함수입니다.

  7. 객체 함수

    객체 함수는 자신의 입력 인수 목록에 정해져 있는 객체 클래스를 받습니다. 이름이 같은 객체 함수가 여러 개 있는 경우 MATLAB은 입력 인수의 클래스를 검사하여 사용할 함수를 결정합니다.

  8. @ 폴더 내 클래스 생성자

    MATLAB은 클래스 생성자를 사용하여 다양한 객체(예: timeseries 또는 audioplayer)를 생성하고 객체 지향 프로그래밍을 사용하여 자체 클래스를 정의할 수 있습니다. 예를 들어, 클래스 폴더 @polynom을 만들어 생성자 함수 @polynom/polynom.m을 생성하면, 이 생성자는 다른 경로에 있는 polynom.m보다 우선합니다.

  9. 불러온 Simulink® 모델

  10. 현재 폴더 내 함수

  11. 경로의 기타 위치에 있는 함수(나타난 순서대로)

동일한 폴더 내에서 함수의 우선 순위를 결정할 때 MATLAB은 다음 순서를 기준으로 파일 형식을 고려합니다.

  1. 내장 함수

  2. MEX 함수

  3. 불러오지 않은 Simulink 모델 파일(파일 형식은 다음 순서를 기준으로 함)

    1. SLX 파일

    2. MDL 파일

  4. .sfx 확장자를 가진 Stateflow® 차트

  5. MATLAB 앱 디자이너를 사용하여 생성된 앱 파일(.mlapp)

  6. 확장자가 .mlx인 프로그램 파일

  7. P 파일(즉, 확장자가 .p인 인코딩된 프로그램 파일)

  8. 확장자가 .m인 프로그램 파일

예를 들어, MATLAB이 동일한 폴더에서 동일한 이름을 갖는 .m 파일 및 P 파일을 찾는 경우 P 파일을 사용합니다. P 파일은 자동으로 재생성되지 않으므로 프로그램 파일을 편집할 때마다 P 파일을 다시 생성해야 합니다.

특정 입력값에 대해 MATLAB이 어떤 함수를 호출하는지 확인하려면 이 함수 이름과 입력값을 which 함수에 포함시켜 호출하십시오.

함수 우선 순위 규칙의 변경 사항

R2019b부터 MATLAB에서 변수, 중첩 함수, 로컬 함수 및 외부 함수의 우선 순위에 영향을 주는 이름 확인 규칙이 변경되었습니다. 코드 업데이트 관련 변경 사항 및 팁에 관한 자세한 내용은 R2019b 함수 우선 순위 변경에 따른 코드 업데이트 항목을 참조하십시오.

  • 식별자는 함수 내에서 두 가지 용도로 사용할 수 없음

  • 명시적으로 선언하지 않은 식별자는 변수로 취급되지 않을 수 있음

  • 변수는 부모 함수와 중첩 함수 간에 묵시적으로 공유할 수 없음

  • 복합형 이름 확인의 우선 순위 변경

  • 익명 함수에는 확인된 식별자와 확인되지 않은 식별자가 포함될 수 있음

import 함수의 동작이 변경되었습니다.

  • 와일드카드 기반 가져오기의 우선 순위 변경

  • 정규화된 가져오기 함수는 중첩 함수와 동일한 이름을 가질 수 없음

  • 정규화된 가져오기는 동일한 이름의 외부 범위 정의를 가림

  • 가져오기를 찾을 수 없을 때의 오류 처리

  • 중첩 함수는 부모 함수에서 import 문을 상속함

참고 항목

관련 항목