为标量创建getter
和setter
非常简单,但无法弄清楚如何为setter
设置Map
:
// for scalar String _str = 'hello'; String get str => _str; String set str(val) => _str = val; // for Map Map _map = {}; Map get map[key] => _map[key]; <== Error: function body ... Map set map[key](val) => _map[key] = val; <=== Error: '(' expected
似乎要求调用operator[]
,但这是设置为class
级
注意:
的问题Map get map => _map
这样,您就可以在不经过_map
的情况下更改setter
。
答案 0 :(得分:0)
不确定我是否完全按照您的要求进行操作。听起来你想要一个顶级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
}