인덱스 표현식 내 객체
인덱스로 사용되는 객체
MATLAB®은 인덱싱된 표현식에서 객체를 인덱스로 사용할 수 있습니다. 인덱스는 양의 정수여야 한다는 배열 인덱싱 규칙이 적용됩니다. 따라서, MATLAB은 인덱싱된 표현식에서 사용하기 위해 양의 정수인 객체로부터 값을 이끌어 낼 수 있어야 합니다.
X(A)
와 같은 인덱싱된 표현식을 사용하면(여기서 A
는 객체임) MATLAB이 subsindex
함수를 호출합니다. 그러나 인덱싱 표현식이 X
클래스에 의해 정의된 matlab.mixin.indexing.RedefinesParen
, matlab.mixin.indexing.RedefinesDot
또는 matlab.mixin.indexing.RedefinesBrace
로부터 오버로드된 메서드를 호출하는 경우 MATLAB은 subsindex
를 호출하지 않습니다.
객체를 인덱스로 구현하는 방법
한 객체의 인덱싱을 다른 객체 X(A)
를 통해 구현하는 방법에는 여러 가지가 있습니다.
A
를 정수로 변환하는subsindex
메서드를A
클래스 내에 정의합니다. MATLAB은X
의 클래스가matlab.mixin.indexing.RedefinesParen
,matlab.mixin.indexing.RedefinesDot
또는matlab.mixin.indexing.RedefinesBrace
의 메서드를 오버로드하지 않는 경우A
의subsindex
메서드를 호출하여 인덱싱 연산을 수행합니다.X
의 클래스가RedefinesParen
,RedefinesDot
또는RedefinesBrace
의 메서드를 오버로드하는 경우 이들 메서드는A
의subsindex
메서드를 명시적으로 호출할 수 있습니다.A
의 클래스는 적절한 값을 반환하는subsindex
메서드를 구현해야 합니다.
subsindex 구현
subsindex
는 객체의 값을 0
~prod(size(X))-1
범위의, 0부터 시작하는 정수 인덱스 값으로 반환해야 합니다.
객체 A
를 사용하여 객체 B
의 요소를 참조한다고 가정하겠습니다. B
는 클래스 설계에 따라 단일 객체 또는 배열일 수 있습니다.
C = B(A);
다음은 subsindex
메서드에 대한 두 가지 예제입니다. 첫 번째는 A
클래스를 uint8
형으로 변환할 수 있다고 가정합니다. 두 번째는 A
클래스가 인덱스 값을 속성에 저장한다고 가정합니다.
A
클래스에 의해 구현된subsindex
메서드는 객체를 인덱스로 사용되도록 수치 형식으로 변환할 수 있습니다.function ind = subsindex(obj) ind = uint8(obj); end
obj
의 클래스는uint8
메서드를 구현하여 객체에서 정수 값으로의 변환을 제공합니다.A
클래스는subsindex
를 구현하여 속성에 저장된 숫자형 값을 반환합니다.function ind = subsindex(obj) ind = obj.ElementIndex; end
참고
subsindex
값은 1이 아니라 0부터 시작하는 값입니다.
참고 항목
matlab.mixin.indexing.RedefinesParen
| matlab.mixin.indexing.RedefinesDot
| matlab.mixin.indexing.RedefinesBrace