이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
상수 값으로 클래스 속성 정의하기
명명된 상수 정의하기
상수 속성을 정의하는 MATLAB® 클래스를 생성하여 이름으로 참조할 수 있는 상수를 정의할 수 있습니다.
상수 속성을 사용하여 이름으로 액세스할 수 있는 상수 값을 정의합니다. 속성 블록에 Constant
특성을 선언하여 상수 속성과 함께 클래스를 생성합니다. Constant
특성을 설정하면 값이 속성 블록에 지정된 값으로 초기화된 후에는 변경될 수 없습니다.
값을 상수 속성에 할당하기
MATLAB 표현식과 함께 Constant
속성에 값을 할당합니다. 예를 들면 다음과 같습니다.
classdef NamedConst properties (Constant) R = pi/180 D = 1/NamedConst.R AccCode = '0145968740001110202NPQ' RN = rand(5) end end
MATLAB은 클래스를 불러올 때 표현식을 실행합니다. 따라서, rand
함수에 대한 단일 호출의 결과가 MATLAB이 RN
에 할당하는 값이며 이후 NamedConst.RN
을 참조해도 이 값이 변경되지 않습니다. clear
classes
를 호출하면 MATLAB이 클래스를 다시 불러오고 상수 속성을 다시 초기화합니다.
상수 속성 참조하기
클래스 이름과 속성 이름을 사용하여 상수를 참조할 수 있습니다.
ClassName.PropName
예를 들어, 앞의 섹션에서 정의한 NamedConst
클래스의 상수 R
, 즉 각도를 라디안으로 변환하는 데 사용하는 상수를 참조합니다.
radi = 45*NamedConst.R
radi = 0.7854
패키지 내 상수
이름으로 액세스할 수 있는 상수 값에 대한 라이브러리를 생성하려면 먼저 패키지 폴더를 생성한 후 다양한 클래스를 정의하여 상수를 구성하십시오. 예를 들어, 천문학적인 계산을 수행하는 데 유용한 상수 집합을 구현하려면 AstroConstants
클래스를 constants
라는 패키지 내부에 정의하면 됩니다.
+constants/@AstroConstants/AstroConstants.m
이 클래스는 다음과 같이 값이 할당된 Constant
속성 집합을 정의합니다.
classdef AstroConstants properties (Constant) C = 2.99792458e8 % m/s G = 6.67259 % m/kgs Me = 5.976e24 % Earth mass (kg) Re = 6.378e6 % Earth radius (m) end end
이 상수 집합을 사용하려면 정식 클래스 이름으로 이 집합을 참조하십시오. 예를 들어, 다음 함수에서는 AstroContants
에 정의된 상수 일부를 사용합니다.
function E = energyToOrbit(m,r) E = constants.AstroConstants.G * constants.AstroConstants.Me * m * ... (1/constants.AstroConstants.Re-0.5*r); end
패키지를 함수로 가져오면 패키지 이름을 반복할 필요가 없습니다(import
참조).
function E = energyToOrbit(m,r) import constants.*; E = AstroConstants.G * AstroConstants.Me * m * ... (1/AstroConstants.Re - 0.5 * r); end
상수 속성에 핸들 객체 할당
클래스가 핸들 객체를 값으로 갖는 상수 속성을 정의하는 경우 핸들 객체 속성에 값을 할당할 수 있습니다. 핸들 객체에 액세스하려면 지역 변수를 생성하십시오.
예를 들어, ConstMapClass
클래스가 상수 속성을 정의한다고 가정하겠습니다. 이 상수 속성의 값이 핸들 객체(containers.Map
객체)입니다.
classdef ConstMapClass < handle properties (Constant) ConstMapProp = containers.Map end end
현재 날짜를 Date
키에 할당하려면 상수 속성에서 핸들을 반환한 후 대입문의 좌변에 지역 변수를 사용하여 값을 할당하십시오.
localMap = ConstMapClass.ConstMapProp
localMap('Date') = datestr(clock);
대입문의 좌변에는 상수 속성에 대한 참조를 사용할 수 없습니다. 예를 들어, MATLAB은 다음 명령문을 ConstMapProp
필드를 갖는 ConstMapClass
라는 struct
를 생성하는 것으로 해석합니다.
ConstMapClass.ConstMapProp('Date') = datestr(clock);
상수 속성에 임의의 객체 할당
정의 클래스의 인스턴스를 상수 속성에 할당할 수 있습니다. MATLAB은 클래스를 불러올 때 상수 속성에 할당되는 인스턴스를 생성합니다. 이 기법은 정의 클래스가 handle
클래스인 경우에만 사용할 수 있습니다.
MyProject
는 다음과 같은 클래스의 예입니다.
classdef MyProject < handle properties (Constant) ProjectInfo = MyProject end properties Date Department ProjectNumber end methods (Access = private) function obj = MyProject obj.Date = datestr(clock); obj.Department = 'Engineering'; obj.ProjectNumber = 'P29.367'; end end end
Constant
속성을 통해 속성 데이터를 참조합니다.
MyProject.ProjectInfo.Date
ans = 18-Apr-2002 09:56:59
MyProject
가 핸들 클래스이기 때문에 상수 속성에 할당된 인스턴스에 대한 핸들을 가져올 수 있습니다.
p = MyProject.ProjectInfo;
이 핸들을 사용하여 MyProject
클래스의 데이터에 액세스합니다.
p.Department
ans = Engineering
이 핸들을 사용하여 MyProject
클래스의 상수가 아닌 속성을 수정합니다.
p.Department = 'Quality Assurance';
p
는 MyProject
의 인스턴스에 대한 핸들이며 ProjectInfo
상수 속성에 할당되어 있습니다.
MyProject.ProjectInfo.Department
ans = Quality Assurance
클래스를 지우면 MyProject
의 새 인스턴스가 ProjectInfo
속성에 할당됩니다.
clear MyProject
MyProject.ProjectInfo.Department
ans = Engineering
속성이 Constant
로 선언된 경우에만 정의 클래스의 인스턴스를 속성의 디폴트 값으로 할당할 수 있습니다.
상수 속성 — 가져오기 이벤트 지원 안 함
상수 속성은 속성 PreGet
또는 PostGet
이벤트를 지원하지 않습니다. Constant
속성의 GetObservable
특성을 true
로 설정하면 MATLAB이 클래스 초기화 중에 경고를 발생시킵니다.