例如,我有一个这样的变量。
var fooBar = 12;
Run Code Online (Sandbox Code Playgroud)
我想要在 Dart lang 中做这样的事情。
print_var_name(fooBar);
Run Code Online (Sandbox Code Playgroud)
打印:
fooBar
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?这甚至可能吗?
谢谢你。
对于 Web 或 Flutter,Dart 中没有这样的东西。
反射可以做到这一点,但反射仅在服务器 VM 中受支持,因为它会影响 tree-shaking。
您需要为此手动编写代码或在需要的地方使用代码生成。
一个例子
class SomeClass {
String foo = 'abc';
int bar = 12;
dynamic operator [](String name) {
switch(name) {
case 'foo': return foo;
case 'bar': return bar;
default: throw 'no such property: "$name";
}
}
}
main() {
var some = SomeClass();
print(some['foo']);
print(some['bar']);
}
Run Code Online (Sandbox Code Playgroud)