Main Content

객체 인덱싱 사용자 지정하기

디폴트 객체 인덱싱

MATLAB® 클래스는 기본적으로 객체 배열 인덱싱을 지원합니다. 대부분의 클래스 설계에서는 이 동작을 수정할 필요가 없습니다.

배열을 사용하면 첨자 표기법을 사용하여 배열의 요소를 참조하고 할당할 수 있습니다. 이 표기법은 특정 배열 요소의 인덱스를 지정합니다. 예를 들어, 숫자로 구성된 두 배열을 생성한다고 가정하겠습니다(randi 및 결합 사용).

1에서 9까지의 정수로 구성된 3×4 배열을 생성합니다.

A = randi(9,3,4)
A =

     4     8     5     7
     4     2     6     3
     7     5     7     7

숫자 3, 6, 9로 구성된 1×3 배열을 생성합니다.

B = [3 6 9];

인덱스 값을 괄호로 묶어 사용하여 하나의 배열의 요소를 참조하고 다른 하나의 배열의 요소에 할당합니다.

B(2) = A(3,4);
B
B =
     3     7     9

MATLAB의 디폴트 동작은 사용자 정의 객체에서도 동작합니다. 예를 들어, 동일한 클래스의 객체로 구성된 배열을 생성한다고 가정하겠습니다.

for k=1:3
   objArray(k) = MyClass;
end

객체 배열 objArray의 두 번째 요소를 참조하면 k = 2일 때 생성된 객체가 반환됩니다.

D = objArray(2);
class(D)
ans =

MyClass

동일한 클래스의 객체로 구성된 배열에 객체를 할당하거나 초기화되지 않은 변수를 할당할 수 있습니다.

newArray(3,4) = D;

객체로 구성된 배열은 MATLAB에서 숫자형 배열과 매우 비슷하게 동작합니다. 특수 메서드를 구현하여 클래스에 표준 배열 동작을 제공할 필요가 없습니다.

배열 인덱싱에 대한 일반적인 정보는 배열 인덱싱 항목을 참조하십시오.

모듈식 인덱싱 클래스를 사용하여 객체 인덱싱 사용자 지정하기

R2021b 이후. Code Patterns for subsref and subsasgn Methods보다 권장됩니다.

클래스에 대한 인덱싱 동작을 수정하려면 하나 이상의 모듈식 인덱싱 mixin 클래스에서 상속하십시오. 각 클래스마다 한 그룹의 인덱싱 연산을 담당합니다.

각 클래스는 자신이 정의하는 각 인덱싱 연산의 세부 정보를 처리하는 추상 메서드를 정의합니다. 이러한 메서드를 구현하여 설계에 필요한 연산을 수행할 수 있습니다.

이러한 클래스에서 개별적으로 상속할 수 있습니다. 예를 들어, RedefinesParen에서만 상속하여 괄호 인덱싱만 사용자 지정할 수 있습니다. 이 경우 점 인덱싱 및 중괄호 인덱싱 동작은 디폴트 MATLAB 동작이 됩니다.

인덱싱의 한두 수준만 사용자 지정하고 추가 연산은 다른 MATLAB 객체로 전달하도록 선택할 수도 있습니다. 예를 들어, 괄호 인덱싱은 사용자 지정하지만(RedefinesParen 사용) 점 메서드 호출은 디폴트 동작을 사용하는 클래스를 작성할 수 있습니다.

myInstance(2,1).value

이 동작에 대한 예제는 Customize Parentheses Indexing 항목을 참조하십시오.

관련 항목