gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:03:01 24 4
gpt4 key购买 nike

假设我希望我的类(class)在属性访问方面做一些事情。我当然可以在 setter 和 getter 中做到这一点:

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,您当然可以委托(delegate)给您想要的任何东西,但这显然不是您想要的。

对于您提到的用例,有 observe包裹。
我不知道它究竟是如何解决问题的,但它工作得很好。

关于dart - 我可以在属性本身而不是包含类中定义 setter 和 getter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com