我可以将一个setter(不是值)作为参数传递给没有反射的函数吗?

Gün*_*uer 5 dart

我想将类'字段的setter作为参数传递给函数,以便函数可以进行赋值.

有没有办法不使用反射?

Ale*_*uin 6

你无法直接传递二传手.

为避免反射,您可以将setter包装在函数内:

class A {
  String _attr=;
  set attr(String v) => _attr = v;
}

main() {
  final a = new A();

  // create a wrapper function to set attr
  final setter = (v) => a.attr = v;

  callSetter(setter);
  print(a._attr);
}

callSetter(setterFunction(value)) {
  setterFunction("value");
}
Run Code Online (Sandbox Code Playgroud)

关于普遍撕下的这个提议已经获得批准,很可能很快就会实施,并且可以让吸气剂和制定者闭合,如:

var setter = a#attr;
// and can be invoked like
setter(value)
Run Code Online (Sandbox Code Playgroud)