8

我的数据模型中定义了以下变量和 getter / setter:

class Actor {
    int _x;
    int get x => _x;
    set x(int value) => _x = value;
}

还有一个需要getter / setter函数指针的泛型类

class PropertyItem {
   var getterFunction;
   var setterFunction;
   PropertyItem(this.getterFunction, this.setterFunction);
}

如何将 X 的 getter / setter 函数的引用传递给 PropertyItem 类?

// Something like this
var item = new PropertyItem(x.getter, x.setter);

编辑:更新了一个更明确的问题

4

2 回答 2

9

简而言之,你没有。getter 和 setter 是不可提取的——它们与仅仅拥有一个字段没有区别(当然,如果你不做副作用的话)。

在您的示例中,您可以这样做:

class Actor {
  int x;
} 

并获得完全相同的效果。

你想要的是,对于一些演员“演员”,自己制作功能:

var item = new PropertyItem(() => actor.x, (v) { actor.x = v; });

This proposal about generalized tear offs is approved and will probably implemented soon and allows to closurize getters and setters like:

var item = new PropertyItem(actor#x, actor#x=);
于 2012-11-25T15:24:40.503 回答
5

在 Dart 中,如下:

class Foo {
  int _offsetX;
  int get offsetX => _offsetX;
  set offsetX(int ox) => _offsetX = ox;
}

相当于:

class Foo {
  int offsetX;
}
于 2012-11-24T22:25:12.877 回答