gpt4 book ai didi

dart - 强制一个变量只能分配一次

转载 作者:行者123 更新时间:2023-12-03 02:57:14 25 4
gpt4 key购买 nike

假设我在一个类中有这段代码:

String _str;
String get str => _str;
void set(String s) {
assert(_str == null);
_str = s;
}

我如何确保只有 setter 和 getter 才能访问 _str?这是为了防止同一个类中的任何东西都无法绕过该条件。

最佳答案

没有办法。在 Dart 中,隐私是每个库的。一个库中的所有内容都可以读取/写入该库中的其他所有内容。

我会去

String __str;
String get str => __str;
void set(String s) {
assert(__str == null);
__str = s;
}

并且永远不要访问以两个下划线开头的成员,除非来自关联的 getter/setter 对。
当我想要一个带有私有(private) getter setter 的私有(private)字段时,我有时会这样做
String __str;
String get _str => __str;
void _set(String s) {
assert(_str == null);
__str = s;
}

一个奇怪的解决方法是在另一个库中创建一个类
class StringProperty {
String _str;
String get value => _str;
void set value(String s) {
assert(_str == null);
_str = s;
}
}

然后在你的图书馆中使用它
final StringProperty str = new StringProperty();

然后您可以访问该值然后喜欢
str.value = 'abc';
print(str.value);

并且没有其他方式。

关于dart - 强制一个变量只能分配一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33802165/

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