2014-01-30 1 views
2

클래스가 속성 액세스에 대한 작업을 수행하기를 원한다고 가정합니다. 나는 물론 세터와 게터에 그 작업을 수행 할 수 있습니다 내가 여러 속성에 동일한 동작을 첨부 할 경우, 그러나포함하는 클래스가 아닌 속성 자체에 setter 및 getter를 정의 할 수 있습니까?

class Foo { 
    set bar (v) { 
     // do stuff 
    } 
} 

, 내가 명시 적으로 모든 일에 대해 동일한 세터와 게터를 정의해야 할 것 그들. (유념해야 할 유즈 케이스는 속성이 변경되는 시점을 아는 클래스입니다. - 다트에 가장 가까운 것은 무엇

class Foo { 
    var bar = new AttributeWithAccessBehavior(); 
} 

파이썬은 기술자와 함께이 작업을 수행 : 내가하고 싶은 무엇

뭔가처럼?

답변

1

AFAIK 재사용 할 수있는 getter/setter 구문이 없습니다.

호출 부호 ()을 사용하여 액세스 할 수있는 필드에 기능을 할당 할 수 있지만 필드 할당을 무시하는 대신 해당 함수를 호출 할 때주의해야합니다.

비슷한 그러나보다 강력한 대안 기능을 에뮬레이션 할 수있는 클래스 (https://www.dartlang.org/articles/emulating-functions/ 참조)

call 방법을 가진 클래스 방법처럼 사용될 수있다. 위의 할당 된 기능과 비슷하지만 상태 정보를 저장할 수 있습니다.

실제 getter/setter를 구현하면 당연히 원하는대로 위임 할 수 있지만 원하는 것은 분명하지 않습니다.

언급 한 사용 사례의 경우 observe 패키지가 있습니다. 정확히 어떻게 문제를 해결했는지는 잘 모르지만 잘 작동합니다.

+0

'observe'는 실제로 문제를 해결하지 못합니다. 변경 사항을 위해 객체를 폴링하거나 속성에 대한 setter를 정의해야합니다. – dgirardi

+0

@dgirardi 네 말이 맞아. –

관련 문제