首页 > 解决方案 > 飞镖图中的默认值

问题描述

有没有办法从飞镖(如Java)中的地图获取默认值:

static Map DEFAULT_MAPPING = Map.unmodifiable({
    "k1": "value"
});

DEFAULT_MAPPING['k1'] //get 'value'

DEFAULT_MAPPING.getOrElse('non-present-key', 'default-value') //something like Java has

标签: dart

解决方案


如果您的地图不包含空值,则可以使用if null 运算符

var map = {
  'a': 1,
  'b': 2,
};
var cValue = map['c'] ?? 3;

或者,您可以定义自己的扩展方法:

extension DefaultMap<K,V> on Map<K,V> {
  V getOrElse(K key, V defaultValue) {
    if (this.containsKey(key)) {
      return this[key];
    } else {
      return defaultValue;
    }
  }
}

var map = {
  'a': 1,
  'b': 2,
};
var cValue = map.getOrElse('c', 3);

推荐阅读