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。