什么';在Dart中,它与[x]相等吗?
例如,在Javascript中,我可以执行以下操作:什么';在Dart中,它与[x]相等吗?,dart,Dart,例如,在Javascript中,我可以执行以下操作: class Foo { x = 'baz'; bar() { const someVar = 'x'; console.log(this[someVar]); // Output: 'baz'; } } 希望这是相对清晰的-它归结为通过另一个变量的内容访问一个成员变量。Dart是如何实现这一点的 这在Dart中并非微不足道。Dart没有使用[]访问类属性的语法 不过,有两种方法: 镜像: 基本上,你可
class Foo {
x = 'baz';
bar() {
const someVar = 'x';
console.log(this[someVar]);
// Output: 'baz';
}
}
希望这是相对清晰的-它归结为通过另一个变量的内容访问一个成员变量。Dart是如何实现这一点的 这在Dart中并非微不足道。Dart没有使用
[]
访问类属性的语法
不过,有两种方法:
镜像:
基本上,你可以访问一切,并提供最大的自由。您可以检查类具有哪些属性,通过名称等访问它们。最大的缺点是生成的JS(如果目标是web)将是巨大的。颤振根本不支持它
可反射的
要处理生成的大型JS,可以使用。从未尝试过用颤振。设置和开始使用bit需要更多,因为它可以工作
仅省道解决方案1
您可以在类上重载[]
运算符:
class Foo{
最终支持={
“foo”:“bar”
};
运算符[](字符串值){
返回支持[val];
}
}
void main(){
最终安装=Foo();
印刷品(inst['foo']);
}
仅省道解决方案2
只需使用地图:)嗯,有点。。。如果您正在处理复杂类型,并且希望向地图中添加一些额外功能,则可以执行以下操作:
导入“dart:collection”;
类StringMap使用MapMixin扩展对象{
最终{}支持={};
@凌驾
字符串运算符[](对象键){
返回_backing[键];
}
@凌驾
无效运算符[]=(字符串键,字符串值){
_后退[键]=值;
}
@凌驾
无效清除(){
_backing.clear();
}
@凌驾
Iterable get keys=>\u backing.keys;
@凌驾
字符串删除(对象键){
返回_backing.remove(键);
}
}
这在Dart中并非微不足道。Dart没有使用[]
访问类属性的语法
不过,有两种方法:
镜像:
基本上,你可以访问一切,并提供最大的自由。您可以检查类具有哪些属性,通过名称等访问它们。最大的缺点是生成的JS(如果目标是web)将是巨大的。颤振根本不支持它
可反射的
要处理生成的大型JS,可以使用。从未尝试过用颤振。设置和开始使用bit需要更多,因为它可以工作
仅省道解决方案1
您可以在类上重载[]
运算符:
class Foo{
最终支持={
“foo”:“bar”
};
运算符[](字符串值){
返回支持[val];
}
}
void main(){
最终安装=Foo();
印刷品(inst['foo']);
}
仅省道解决方案2
只需使用地图:)嗯,有点。。。如果您正在处理复杂类型,并且希望向地图中添加一些额外功能,则可以执行以下操作:
导入“dart:collection”;
类StringMap使用MapMixin扩展对象{
最终{}支持={};
@凌驾
字符串运算符[](对象键){
返回_backing[键];
}
@凌驾
无效运算符[]=(字符串键,字符串值){
_后退[键]=值;
}
@凌驾
无效清除(){
_backing.clear();
}
@凌驾
Iterable get keys=>\u backing.keys;
@凌驾
字符串删除(对象键){
返回_backing.remove(键);
}
}