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

时间:2014-03-05 07:59:21

标签: dart

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

有没有办法不使用反射?

2 个答案:

答案 0 :(得分: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");
}

proposal about generalized tear offsapproved,可能会很快实施,并允许将吸气剂和制定者关闭,如:

var setter = a#attr;
// and can be invoked like
setter(value)

答案 1 :(得分:0)

您也可以这样:

调用函数:

function ( (parameter) => val = parameter );

函数主体应如下所示:

void function (setter) {
    setter = newValue;
}

希望它会有所帮助,如果不起作用,请通知我。