比方說,我有一個類,像這樣:同步的任意屬性的對象透明地d
class Gerbil{
int id;
float x,y,z;
}
讓我們進一步說,這是一個實時仿真,我有一臺服務器/客戶端的設置和我的一部分在服務器端更改屬性:
//...
gerbil.x = 9.0;
//...
現在我想將此更改發送到客戶端以同步世界狀態。然而,問題是我有可能大量的沙鼠,而且這些沙鼠也可能具有很長的特性列表 - 不僅如此處所描繪的x,y,z那樣。
我的問題是:有沒有一種方法,我們可以透明地截取這些屬性分配,並從它們編譯差異?
從閱讀D參考我得到的印象opAssign
可能是正確的事情,只有實際上沒有如何使用它的例子? (D Ref./opAssign)我想這將是這個樣子,但我只是從臀部射擊:
void opAssign(string name)(float val){ //Just guessing here
if(name in floatProps){
if(isServer){
changedProps.push(this.id, name, val);
}
floatProps[name] = val;
}
}
然後opAssign將被稱爲當我們這樣做:
gerbil.x = 9.0; //Same as gerbil.opAssign!("x")(9.0) ??
除了可能是錯誤的語法,這是朝着正確方向邁出的一步嗎?什麼是正確的語法?性能如何?它看起來可能很慢?有沒有更快,更「直接」的方式呢?
我真的很想避免這裏有詳細的設置,如:
gerbil.incProp(Prop.X, 9.0);
感謝您的時間。
我明白了。屬性和mixin聽起來很有趣。我會嘗試,並在需要時採用手動攔截代碼。謝謝! – 0scar 2010-09-30 23:22:34
哇!現在我更愛D了。 :) – qeek 2010-10-06 19:38:48