NamedOperation
NamedOperation (이름이 붙은 연산)
다른 연산에 이름을 결합하는 연산입니다. 보통 이름이나 인덱스를 받는 연산을 고정된 이름에 바인딩할 때 사용해요.
본문
예를 들어 다음 코드는 적용 대상 객체에서 "color"라는 이름의 프로퍼티를 가져오는 연산이 됩니다.
new NamedOperation(
new NamespaceOperation(
StandardOperation.GET,
StandardNamespace.PROPERTY),
"color")
이고, 아래는 대상 컬렉션에서 인덱스 3의 요소를 가져오는 연산이에요.
new NamedOperation(
new NamespaceOperation(
StandardOperation.GET,
StandardNamespace.ELEMENT),
3)
여기서 "이름"은 '주소'에 가까운 개념으로, 텍스트 이름뿐 아니라 숫자 인덱스나 링커가 이해하는 다른 종류의 주소 지정 방식을 모두 포괄합니다. 이렇게 되면 콜 사이트의 예상 시그니처에서 이름 매개변수가 빠집니다.
NamedOperation을 직접 만들 수도 있지만, Operation.named(Object) 팩토리 메서드를 쓰는 편이 편리해요.
StandardOperation.GET
.withNamespace(StandardNamespace.ELEMENT)
.named(3)
보통 NamespaceOperation을 기반으로 자주 쓰지만, 기반이 다른 연산일 수도 있어요(다른 named 연산은 제외). 특히 StandardOperation.CALL과 New는 NamedOperation과 직접 쓸 수 있어요. 이 경우 이름은 주로 진단 메시지용으로만 사용되며, 보통 호출 대상을 가져온 소스 표현의 텍스트 표현을 담습니다. 예를 들어 StandardOperation.CALL.named("window.open")처럼요.
생성자
NamedOperation(Operation baseOperation, Object name)— 새 이름이 붙은 연산을 만듭니다.
주요 메서드
getBaseOperation()— 기반 연산을 반환합니다.getName()— 결합된 이름을 반환합니다.changeName(String newName)— 이름만 다른 named 연산을 찾거나 만들어 반환합니다.getNamedOperation(Operation baseOperation, Object name)— 주어진 기반 연산과 이름으로 named 연산을 찾거나 만드는 정적 메서드입니다.