dart - 如何初始化静态变量并为其设置各种值?
问题描述
在java中,如果你想初始化一个静态变量,你可以在静态初始化块中编写代码,如下所示:
abstract class Dummy {
static final Map<String, object> cache = new HashMap();
static {
cache.add('foo', new Foo());
cache.add('bar', new Bar());
}
}
这里我想问一下Dart中是否有类似的方式?Dart 编程中最好的编码实践是什么?
abstract class Dummy {
static final Map<String, dynamic> cache = <String, dynamic>{};
}
解决方案
好吧,dart 中没有静态初始化块,但是您可以在此处采用其他一些方法。
首先,如果您只想向地图添加一些项目,则可以使用地图文字语法:
abstract class Dummy {
static final Map<String, dynamic> cache = <String, dynamic>{
'foo': Foo(),
'bar': Bar(),
};
}
此外,如果您只想通过调用一些方法来初始化静态值,您可以使用cascade notation ..
,对于这个特定示例,它看起来像这样:
abstract class Dummy {
static final Map<String, dynamic> cache = <String, dynamic>{}
..['foo'] = Foo()
..['bar'] = Bar();
}
上面是使用 cascade 调用[]=
map 实例上的操作符,但是您可以使用 cascade 调用 map 实例上的任何方法。例如,我还可以调用 remove 方法:
abstract class Dummy {
static final Map<String, dynamic> cache = <String, dynamic>{}
..['foo'] = Foo()
..['bar'] = Bar()
..remove('foo');
}
推荐阅读
- c# - 获取 ReferencedSymbol 的方法名
- java - Spring Boot CommandLineRunner 和构造函数注入
- python - Tensorflow 中的通道优先卷积层
- c++ - 在 Visual Studio 中调试时,我可以将一些 C/C++ 结构内容保存到磁盘吗?
- javascript - 谷歌地图在反应中不起作用?
- python - python结构挂在bashscript上不会返回对象
- micronaut - 异步 GORM 或数据访问和同步代码
- apache-spark - 在pyspark中两次过滤数据
- image - 使用 OpenCV 或任何其他软件从像素中获取真实的 RAW 值
- pdf - 如何以快捷方式将条目为一位十进制数的矩阵从Latex的文本文件转换为Scilab的控制台?