在javascript
我们可以做这样的事情:
var x = {
'name' : 'john',
'modifiedName' : function () { return this.name + ' <- modified'}
};
所以 x.modifiedName() 返回john <- modified
如何做到这一点dart
?
我想使用 a 中的一些值Map
来返回键的值,javascript
例如示例。
在javascript
我们可以做这样的事情:
var x = {
'name' : 'john',
'modifiedName' : function () { return this.name + ' <- modified'}
};
所以 x.modifiedName() 返回john <- modified
如何做到这一点dart
?
我想使用 a 中的一些值Map
来返回键的值,javascript
例如示例。
你可以这样做:
var x;
x = {
'name' : 'john',
'modifiedName' : () => x['name'] + ' <- modified'
};
print(x['modifiedName']());
因此,只要在声明后使用,this
您就可以使用 , 而不是只使用它。x
x
不是地图文字。但是您可以制作自己的地图类,并且有多种方法可以实现这一点。
作为方法
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"]);
}