【问题标题】:in Dart, how to write a getters and setters for a Map[key]?在 Dart 中,如何为 Map[key] 编写 getter 和 setter?
【发布时间】:2013-11-30 03:32:37
【问题描述】:

为标量创建getters 和setters 非常简单,但无法弄清楚如何为Map 设置setter

// 对于标量 字符串 _str = '你好'; 字符串获取 str => _str; 字符串集 str(val) => _str = val; // 对于地图 地图_map = {}; 地图获取地图[key] => _map[key]; _map[key] = val;

似乎需要operator[],但它设置在class 级别

注意:问题

地图获取地图 => _map

这是否允许您更改_map 而无需通过setter

【问题讨论】:

    标签: class dart getter


    【解决方案1】:

    不确定我是否完全按照您要执行的操作。听起来您想要一个顶级 Map 变量,并且能够为 [] 和 []= 运算符提供您自己的实现。

    您必须创建一个类来覆盖运算符 [] 和 []=。但是,您仍然可以实现您所要求的(我认为?)。在我的脑海中,它看起来像这样。

    Map _map = new MyMap();
    
    Map get map =>  _map;
    
    set map(Map m) {
        _map = new MyMap.from(m);
    }
    
    class MyMap<K,V> implements Map {
        MyMap.from(Map<K, V> other) => ...;
        V operator [](K key) => ...;
        operator []=(K key, V value) => ...;
        ... other members
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      相关资源
      最近更新 更多