强制变量只能分配一次

蒂博·索蒂奥

假设我在一个类中有以下代码:

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

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

贡特·佐赫鲍尔(GünterZöchbauer)

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

我会去

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

除非从关联的getter / setter对中访问,否则绝不访问以两个下划线开头的成员。当我想要带有私有getter setter的私有字段时,有时会这样做

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);

并没有其他方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一次分配多个变量

来自分类Dev

是否可以定义只能设置一次的变量?

来自分类Dev

pthread 条件变量只能使用一次吗?

来自分类Dev

Android,强制onLayoutChange函数在分配后执行一次?

来自分类Dev

仅在一次使用时强制变量扩展

来自分类Dev

仅在一次使用时强制变量扩展

来自分类Dev

一次运行即可分配并返回变量

来自分类Dev

如何在JavaScript中一次分配多个变量?

来自分类Dev

从Select语句一次分配多个变量

来自分类Dev

使用SOURCE =一次分配多个变量

来自分类Dev

awk一次分配给多个变量

来自分类Dev

使用SOURCE =一次分配多个变量

来自分类Dev

一次为Scrapy Items分配多个变量

来自分类Dev

一次只能运行一次该功能

来自分类Dev

Python:总有一次只能初始化一个变量吗?

来自分类Dev

木偶只能创建一次virtualenv

来自分类Dev

动画只能播放一次

来自分类Dev

onClick按钮只能工作一次

来自分类Dev

属性“样式”只能设置一次

来自分类Dev

脚本只能运行一次

来自分类Dev

Android onClickListener只能运行一次

来自分类Dev

Javascript onclick只能运行一次

来自分类Dev

Javascript库只能运行一次

来自分类Dev

Python:线程只能启动一次

来自分类Dev

是否只能执行一次功能?

来自分类Dev

Android onClickListener只能运行一次

来自分类Dev

该功能只能运行一次

来自分类Dev

Python:线程只能启动一次

来自分类Dev

动画只能播放一次