이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
논리 연산, 집합의 원소인지 여부, 문자열 비교 연산을 열거형에 사용할 수 있습니다. 이러한 연산의 경우 조건문(예: switch
문 및 if
문)에서도 열거형을 사용할 수 있습니다. 변환기를 사용하면 char
형 벡터와 string형으로 구성된 셀형 배열을 열거형으로 사용할 수도 있습니다.
WeekDays
클래스는 요일을 열거하는 멤버를 정의합니다. 이 항목에서는 WeekDays
클래스를 사용하여 열거형에 대한 연산을 수행하는 방법을 보여줍니다.
classdef WeekDays enumeration Monday, Tuesday, Wednesday, Thursday, Friday end end
열거형을 정의하는 방법에 대한 자세한 내용은 열거형 클래스 정의하기 항목을 참조하십시오.
열거형 클래스에 다음과 같은 디폴트 메서드가 있습니다.
methods('WeekDays')
Methods for class WeekDays: WeekDays char intersect ne setxor strcmpi strncmp union cellstr eq ismember setdiff strcmp string strncmpi
WeekDays
메서드는 char
형 벡터, char
형 벡터로 구성된 셀형 배열 또는 string
형 배열 요소를 열거형으로 변환합니다.
다른 메서드는 열거형과 함께 사용될 때 상응하는 함수와 유사하게 동작합니다. 특정 메서드에 대한 자세한 내용은 해당 함수에 대한 문서를 참조하십시오.
설명적 이름으로 열거형 멤버를 정의할 수 있기 때문에 char
형으로 변환하는 것이 유용합니다. 예를 들면 다음과 같습니다.
today = WeekDays.Friday;
['Today is ',char(today)]
ans = Today is Friday
cellstr
을 사용하여 열거형 배열을 char
형 벡터로 구성된 셀형 배열로 변환할 수 있습니다.
ca = cellstr([WeekDays.Tuesday,WeekDays.Thursday]); class(ca)
ans = cell
셀형 배열에 포함된 두 셀 모두 char
형 벡터를 포함합니다.
class([ca{1:2}])
ans = char
관계 연산자 eq
및 ne
를 포함하며 그중 하나의 피연산자가 열거형인 표현식에서는 다른 피연산자가 char
형일 수 있습니다. 연산을 수행하기 전에 MATLAB®이 char
형 벡터를 스칼라 열거형으로 변환하거나 char
형 벡터로 구성된 셀형 배열을 열거형 배열로 변환합니다.
참고
MATLAB 내장 클래스에서 파생되는 열거형 클래스는 열거형 멤버에 대해 char
형 벡터를 대체할 수 없습니다.
today = WeekDays.Friday;
today == 'Friday'
ans = 1
열거형 배열을 char
형 벡터와 비교합니다.
wd = [WeekDays.Monday,WeekDays.Wednesday,WeekDays.Friday];
wd == 'Friday'
ans = 0 0 1
열거형 배열을 char
형 벡터로 구성된 셀형 배열과 비교합니다.
cv = {'Monday','Wednesday','Friday'}; md = [WeekDays.Tuesday,WeekDays.Thursday,WeekDays.Friday]; md ~= cv
ans = 1 1 0
char
형 벡터 Wednesday
는 열거형 멤버 WeekDays.Wednesday
와 같습니다(==
). 조건문에서 이 등식을 사용할 수 있습니다.
today = 'Wednesday'; ... if today == WeekDays.Wednesday disp('Team meeting at 2:00') end
switch
문 내 열거형등식(eq
) 및 부등식(ne
) 메서드를 사용하여 switch
문에서 열거형 멤버를 사용할 수 있습니다. 예를 들어, 앞에서 정의한 WeekDays
클래스를 사용하여 switch 문을 생성한다고 가정하겠습니다.
function c = Reminder(day) % Add error checking here switch(day) case WeekDays.Monday c = 'Department meeting at 10:00'; case WeekDays.Tuesday c = 'Meeting Free Day!'; case {WeekDays.Wednesday WeekDays.Friday} c = 'Team meeting at 2:00'; case WeekDays.Thursday c = 'Volleyball night'; end end
WeekDays
열거형 클래스의 멤버를 Reminder
함수에 전달합니다.
today = WeekDays.Wednesday; Reminder(today)
ans = Team meeting at 2:00
자세한 내용은 Objects In Conditional Statements 항목을 참조하십시오.
char
형 벡터 대체하기참고
MATLAB 내장 클래스에서 파생되는 열거형 클래스는 열거형 멤버에 대해 char
형 벡터를 대체할 수 없습니다.
char
형 벡터를 사용하여 특정 열거형 멤버를 표현할 수 있습니다.
function c = Reminder2(day) switch(day) case 'Monday' c = 'Department meeting at 10:00'; case 'Tuesday' c = 'Meeting Free Day!'; case {'Wednesday' 'Friday'} c = 'Team meeting at 2:00'; case 'Thursday' c = 'Volleyball night'; end end
열거형을 명시적으로 지정하지 않고 char
형 벡터를 사용할 수도 있지만 MATLAB은 char
형을 열거형으로 변환해야 합니다. 꼭 필요한 상황이 아니라면 굳이 변환을 적용할 필요는 없습니다.
열거형 클래스는 집합의 원소인지 여부를 확인할 수 있는 메서드를 제공합니다.
오늘이 팀이 모이는 날인지 여부를 확인한다고 가정하겠습니다. 팀이 모임을 갖는 날에 해당하는 열거형 멤버 집합을 생성합니다.
today = WeekDays.Tuesday; teamMeetings = [WeekDays.Wednesday WeekDays.Friday];
ismember
를 사용하여 today
가 teamMeetings
집합의 요소인지 여부를 확인할 수 있습니다.
ismember(today,teamMeetings)
ans = 0
char
형이 혼합된 집합열거형 인수와 char
형 인수를 모두 열거형 클래스 메서드에 전달하면 클래스가 char
형을 열거형 클래스로 변환하려고 합니다.
char
형 벡터가 열거형 배열의 멤버인지 여부를 확인합니다.
teamMeetings = [WeekDays.Wednesday WeekDays.Friday];
ismember('Friday',teamMeetings)
ans = 1
열거형 멤버가 char
형 벡터로 구성된 셀형 배열의 멤버인지 여부를 확인합니다.
ismember(WeekDays.Friday,{'Wednesday','Friday'})
ans = 1
열거형 클래스는 열거형 멤버를 char
형 벡터와 비교하는 메서드를 제공합니다. 문자열 비교 메서드에 대한 인수 중 하나는 char
형 벡터여야 합니다. 두 열거형 멤버를 비교하면 false
가 반환됩니다.
char
형 벡터와 비교하기문자열 비교 메서드는 열거형 멤버와 char
형 벡터를 비교할 수 있습니다.
today = WeekDays.Tuesday;
strcmp(today,'Friday')
ans = 0
strcmp(today,'Tuesday')
ans = 1
enumeration
함수를 사용하여 열거형 클래스에 대한 정보를 가져올 수 있습니다. 예를 들면 다음과 같습니다.
enumeration WeekDays
Enumeration members for class 'WeekDays': Monday Tuesday Wednesday Thursday Friday
Metaclass EnumeratedValues Property 항목도 참조하십시오.
변수가 열거형인지 여부를 확인하려면 isenum
함수를 사용하십시오. 예를 들면 다음과 같습니다.
today = WeekDays.Wednesday; isenum(today)
ans = 1
isenum
은 빈 열거형 객체에 대해 true
를 반환합니다.
noday = WeekDays.empty; isenum(noday)
ans = 1
변수 클래스의 클래스가 열거형 클래스인지 여부를 확인하려면 meta.class
객체를 사용하십시오.
today = WeekDays.Wednesday; mc = metaclass(today); mc.Enumeration
ans = 1