在javascript
我们可以这样做:
var x = {
'name' : 'john',
'modifiedName' : function () { return this.name + ' <- modified'}
};
所以x.modifiedName()返回john <- modified
如何在dart
上执行此操作?
我想使用Map
中的某些值来返回键的值,例如javascript
示例。
答案 0 :(得分:5)
你可以这样做:
var x;
x = {
'name' : 'john',
'modifiedName' : () => x['name'] + ' <- modified'
};
print(x['modifiedName']());
因此,只要您在声明后使用this
,就可以使用x
代替x
。
答案 1 :(得分: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"]);
}