假设我想让我的班级做关于属性访问的事情。我当然可以在设置者和获取者中做到这一点:
class Foo {
set bar (v) {
// do stuff
}
}
但是,如果要将相同的行为附加到多个属性,则必须为每个属性显式定义相同的setter和getter。(我想到的用例是一个可观察的实例,即一个知道何时更改其属性的类)。
我想做的是这样的:
class Foo {
var bar = new AttributeWithAccessBehavior();
}
Python使用描述符执行此操作-Dart中最接近的是什么?
AFAIK没有任何可重用的getter / setter语法。
您可以将一个函数分配给一个字段,您可以使用调用符号对其进行访问()
,但是您必须小心地调用该函数,而不是覆盖字段分配。
可以模拟功能的类是类似但功能更强大的替代方法(请参见https://www.dartlang.org/articles/emulating-functions/)
具有call
方法的类可以像方法一样使用。这类似于上述分配的功能,但是您还可以存储状态信息。
如果实现了实际的getter / setter,那么您当然可以委托给您想要的任何东西,但这显然不是您想要的。
对于您提到的用例,有一个observe
包装。我不知道它是如何解决问题的,但是效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句