使用符号传递一个 class 成员的名字?

Use symbols to pass a class member's name?

我正在编写一个测试实用函数,想传递一个 class 成员 name 并获取它的值。我可以为此使用 Symbols 吗?我的测试代码是这样的

class Foo {
  String a = 'A';
  String b = 'B';
  static void output(Symbol symbol) {
    debugPrint("The value is '$symbol'");
  }
}

Foo.output(#a);

我正在尝试获得类似 The value is 'A' 的结果,但我得到的是 The value is 'Symbol("a")'?

通过名称获取某物的值,其中名称是,并且在运行时,也就是反射。 为此,您需要 dart:mirrors,这在大多数平台上都不可用。

更好的是,根本不要这样做。 Dart 有第一个 class 函数,因此您可以传入一个访问变量的函数:

class Foo {
  String a = 'A';
  String b = 'B';
  static void output(String read(Foo value)) {
    debugPrint("The value is '${read(this)}'");
  }
}

void main() {
  var foo = Foo();
  foo.output((f) => f.a);
  foo.output((f) => f.b);
}