2

javascript我们可以做这样的事情:

var x = {
  'name' : 'john',
  'modifiedName' : function () { return this.name + ' <- modified'}
};

所以 x.modifiedName() 返回john <- modified

如何做到这一点dart

我想使用 a 中的一些值Map来返回键的值,javascript例如示例。

4

2 回答 2

5

你可以这样做:

var x;
x = {
    'name' : 'john',
    'modifiedName' : () => x['name'] + ' <- modified'
};
print(x['modifiedName']());

因此,只要在声明后使用,this您就可以使用 , 而不是只使用它。xx

于 2013-04-25T16:11:40.923 回答
2

不是地图文字。但是您可以制作自己的地图类,并且有多种方法可以实现这一点。

作为方法

import "dart:collection";

class MyMap extends LinkedHashMap {

  String modifiedName() {
    String name = this["name"];
    return "$name <- modified";
  }

}

void main() {
  MyMap map = new MyMap();
  map["name"] = "John";
  print(map.modifiedName());
  map["name"] = "Harry";
  print(map.modifiedName());
}

作为财产

import "dart:collection";

class MyMap extends LinkedHashMap {

  String _modifiedName() {
    String name = this["name"];
    return "$name <- modified";
  }

  String get modifiedName => _modifiedName();

}

void main() {

  MyMap map = new MyMap();
  map["name"] = "John";
  print(map.modifiedName);
  map["name"] = "Harry";
  print(map.modifiedName);

}

作为地图键

import "dart:collection";

class MyMap extends LinkedHashMap {

  String operator [](String key) {
    if(key == "modifiedName") {
      String n = this["name"];
      return "$n <- modified";
    }
    return super[key];
  }

}

void main() {

  MyMap map = new MyMap();
  map["name"] = "John";
  print(map["modifiedName"]);
  map["name"] = "Harry";
  print(map["modifiedName"]);

}
于 2013-04-25T08:40:40.507 回答