인덱스 표현식 내 객체
인덱스로 사용되는 객체
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