Operation
Operation (동적 연산)
동적 연산을 기술하는 객체를 위한 인터페이스입니다. Dynalink는 StandardOperation 클래스로 표준 연산 집합을 정의하고, NamespaceOperation으로 연산이 대상으로 하는 객체의 네임스페이스를 표현하며, NamedOperation으로 연산에 고정된 대상 이름을 붙이는 방식을 제공해요.
본문
이 문서에서 예시를 들 때 연산을 표기하는 규칙이 있어요. 표준 연산은 이름으로(예: GET), 네임스페이스 연산은 기반 연산과 네임스페이스를 콜론으로 구분해(GET:PROPERTY) 나타내고, 네임스페이스가 여럿이면 세로줄로 구분합니다(GET:PROPERTY|ELEMENT). 마지막으로 이름이 붙은 연산은 기반 연산과 이름을 콜론으로 구분해 표기해요(GET:PROPERTY|ELEMENT:color).
이렇게 연산을 조합하면 단순한 동작에서 구체적인 대상까지 풍부하게 표현할 수 있어요. 예를 들어 "객체의 PROPERTY 네임스페이스에서 color 값을 꺼내라" 같은 요청을 데이터로 나타낼 수 있는 것이죠. Dynalink는 이 Operation 객체를 콜 사이트 설명자에 담아 링커에 전달합니다.
연산은 크게 세 가지 형태로 확장됩니다. StandardOperation은 동작의 종류를, NamespaceOperation은 그 동작이 어느 네임스페이스를 대상으로 하는지, NamedOperation은 대상의 이름을 각각 표현해요. 이런 계층 구조 덕분에 Dynalink의 연산 모델은 다양한 스크립팅 언어의 객체 연산을 유연하게 담아낼 수 있습니다.
기본 메서드
-
withNamespace(Namespace namespace)— 이 연산을 기반으로 하는NamespaceOperation을 반환합니다. 이 연산이 이미 네임스페이스 연산이거나 이름 있는 연산이면IllegalArgumentException,namespace가null이면NullPointerException이 발생해요. -
withNamespaces(Namespace... namespaces)— 이 연산을 기반으로 하고 여러 네임스페이스를 대상으로 하는NamespaceOperation을 반환합니다. 위와 같은 예외 조건이 적용됩니다. -
named(Object name)— 이 연산을 기반으로 하는NamedOperation을 반환합니다. 이 연산이 이미 이름 있는 연산이면IllegalArgumentException이 발생해요.