我想将类'字段的setter作为参数传递给函数,以便函数可以进行赋值。
有没有办法不使用反射?
答案 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 offs为approved,可能会很快实施,并允许将吸气剂和制定者关闭,如:
var setter = a#attr;
// and can be invoked like
setter(value)
答案 1 :(得分:0)
您也可以这样:
调用函数:
function ( (parameter) => val = parameter );
函数主体应如下所示:
void function (setter) {
setter = newValue;
}
希望它会有所帮助,如果不起作用,请通知我。