首页 > 解决方案 > 如何初始化静态变量并为其设置各种值?

问题描述

在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

解决方案


好吧,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');
}

推荐阅读