Main Content

인덱스 표현식 내 객체

인덱스로 사용되는 객체

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의 메서드를 오버로드하지 않는 경우 Asubsindex 메서드를 호출하여 인덱싱 연산을 수행합니다.

  • X의 클래스가 RedefinesParen, RedefinesDot 또는 RedefinesBrace의 메서드를 오버로드하는 경우 이들 메서드는 Asubsindex 메서드를 명시적으로 호출할 수 있습니다. 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부터 시작하는 값입니다.

참고 항목

| |

관련 항목