什么';在Dart中,它与[x]相等吗?

什么';在Dart中,它与[x]相等吗?,dart,Dart,例如,在Javascript中,我可以执行以下操作: class Foo { x = 'baz'; bar() { const someVar = 'x'; console.log(this[someVar]); // Output: 'baz'; } } 希望这是相对清晰的-它归结为通过另一个变量的内容访问一个成员变量。Dart是如何实现这一点的 这在Dart中并非微不足道。Dart没有使用[]访问类属性的语法 不过,有两种方法: 镜像: 基本上,你可

例如,在Javascript中,我可以执行以下操作:

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(键);
}
}