Dart 我可以在属性本身而不是包含类中定义setter和getter吗?

Dart 我可以在属性本身而不是包含类中定义setter和getter吗?,dart,descriptor,Dart,Descriptor,假设我想让我的类在属性访问上做一些事情。我当然可以在二传手和三传手中做到这一点: class-Foo{ 设置条(v){ //做事 } } 但是,如果我想将相同的行为附加到多个属性,我必须为每个属性显式定义相同的setter和getter。(我想到的用例是一个可观察的,即知道其属性何时被更改的类) 我想做的是: class-Foo{ var bar=新的AttributeWithAccessBehavior(); } Python使用描述符实现这一点——Dart中最接近的东西是什么?AFAIK

假设我想让我的类在属性访问上做一些事情。我当然可以在二传手和三传手中做到这一点:

class-Foo{
设置条(v){
//做事
}
}
但是,如果我想将相同的行为附加到多个属性,我必须为每个属性显式定义相同的setter和getter。(我想到的用例是一个可观察的,即知道其属性何时被更改的类)

我想做的是:

class-Foo{
var bar=新的AttributeWithAccessBehavior();
}

Python使用描述符实现这一点——Dart中最接近的东西是什么?

AFAIK没有任何getter/setter语法可以重用

您可以将一个函数分配给一个字段,您可以使用调用表示法
()
访问该字段,但是您必须小心调用该函数,而不是重写字段分配

类似但功能更强大的替代方案是可以模拟函数的类(请参阅)

具有
调用
方法的类可以像方法一样使用。 这类似于上面提到的指定函数,但另外您可以存储状态信息

如果您实现了实际的getter/setter,您当然可以将其委托给您想要的任何对象,但这显然不是您想要的

对于您提到的用例,有
observe
包。
我不知道它到底是如何解决这个问题的,但它工作得相当好。

observe
并不能真正解决这个问题-它要求您轮询对象以进行更改,或者为属性定义setter。