8

データモデルで定義された次の変数とゲッター/セッターがあります。

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

そして、ゲッター/セッター関数ポインターを必要とするこのジェネリッククラスがあります

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

X のゲッター/セッター関数の参照を PropertyItem クラスに渡すにはどうすればよいですか?

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

編集:より明確な質問で更新

4

2 に答える 2

9

要するに、あなたはしません。ゲッターとセッターは抽出できません-フィールドを持っているだけと区別できません(もちろん、副作用を行わない場合)。

あなたの例では、次のことができます。

class Actor {
  int x;
} 

まったく同じ効果が得られます。

必要なのは、一部のアクター「アクター」にとって、自分で関数を作成することです。

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

一般化されたティアオフに関するこの提案は承認されており、おそらく間もなく実装され、次のようなゲッターとセッターをクロージャライズすることができます。

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 に答える