Main Content

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

열거형에 대한 연산

열거형에서 지원되는 연산

논리 연산, 집합의 원소인지 여부, 문자열 비교 연산을 열거형에 사용할 수 있습니다. 이러한 연산의 경우 조건문(예: 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

열거형 배열을 char형 벡터로 구성된 셀형 배열로 변환하기

cellstr을 사용하여 열거형 배열을 char형 벡터로 구성된 셀형 배열로 변환할 수 있습니다.

ca = cellstr([WeekDays.Tuesday,WeekDays.Thursday]);
class(ca)
ans =

cell

셀형 배열에 포함된 두 셀 모두 char형 벡터를 포함합니다.

class([ca{1:2}])
ans =

char

관계 연산 내 열거형 및 char형 벡터

관계 연산자 eqne를 포함하며 그중 하나의 피연산자가 열거형인 표현식에서는 다른 피연산자가 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형을 열거형으로 변환해야 합니다. 꼭 필요한 상황이 아니라면 굳이 변환을 적용할 필요는 없습니다.

열거형의 집합의 원소인지 여부 확인

열거형 클래스는 집합의 원소인지 여부를 확인할 수 있는 메서드를 제공합니다.

  • ismember — 열거형 배열의 요소가 집합의 원소인 경우 true

  • setdiff — 열거형 배열에 대한 차집합

  • intersect — 열거형 배열에 대한 교집합

  • setxor — 열거형 배열에 대한 배타적 OR 연산

  • union — 열거형 배열에 대한 합집합

오늘이 팀이 모이는 날인지 여부를 확인한다고 가정하겠습니다. 팀이 모임을 갖는 날에 해당하는 열거형 멤버 집합을 생성합니다.

today = WeekDays.Tuesday;
teamMeetings = [WeekDays.Wednesday WeekDays.Friday];

ismember를 사용하여 todayteamMeetings 집합의 요소인지 여부를 확인할 수 있습니다.

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가 반환됩니다.

  • strcmp — 열거형 멤버 비교

  • strncmp — 열거형 멤버의 처음 n개 문자 비교

  • strcmpi — 열거형 멤버에 대한 대/소문자를 구분하지 않는 비교

  • strncmpi — 열거형 멤버의 처음 n개 문자에 대한 대/소문자를 구분하지 않는 비교

열거형 멤버를 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

관련 항목