參考

2012-11-24 85 views
4

我在數據模型中定義以下變量和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); 

編輯:有一個更清晰的問題

+0

它是Dart意識形態的核心元素之一,是你不使用'空'getters/setters:如果有一個屬性(無論是在目標類還是其超類)被訪問,語言會尋找它的setter/getter方法;只有當檢查失敗時,該屬性纔會被直接訪問。你能否更新你的問題,並提供關於班級結構的更多細節? – raina77ow

+0

raina77ow,謝謝。希望更新的問題更清楚。 –

回答

6

總之,你不「T。 吸氣劑和吸附劑不可萃取 - 它們與只有一個區域無法區分(當然,如果你不做副作用)。

在你的榜樣,你可以只是做:

class Actor { 
    int x; 
} 

,並得到完全相同的效果。

你想要什麼,對於某些演員「演員」,給自己做功能:

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

proposal about generalized tear offsapproved並可能會盡快實施,並允許closurize getter和setter方法,如:

var item = new PropertyItem(actor#x, actor#x=); 
+0

謝謝,這是我需要的 –

3

在DART,以下更新:

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

等同於:

class Foo { 
    int offsetX; 
} 
+0

有沒有辦法獲得該get/set函數的引用?我需要將這兩個函數指針傳遞給一個類。我會更新問題以使其更清晰 –

+0

請參閱http://api.dartlang.org/docs/bleeding_edge/dart_mirrors.html – Cutch