使用符号传递一个 class 成员的名字?
Use symbols to pass a class member's name?
我正在编写一个测试实用函数,想传递一个 class 成员 name 并获取它的值。我可以为此使用 Symbol
s 吗?我的测试代码是这样的
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);
}
我正在编写一个测试实用函数,想传递一个 class 成员 name 并获取它的值。我可以为此使用 Symbol
s 吗?我的测试代码是这样的
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);
}