可以說我有這個在一行中更改一個變量?
int x = 0;
int y = 0;
int z = 0;
const int v = 50;
//change x,y,z
x += v;
y += v;
z += v;
其優良的,但有一個較短的方式來避免這種3行代碼(有+=
)和只有一個?我只是問自己,因爲我必須經常爲這些變量添加一些const,然後我必須添加總是+3行(或更多,如果我有xyz +變量)。
可以說我有這個在一行中更改一個變量?
int x = 0;
int y = 0;
int z = 0;
const int v = 50;
//change x,y,z
x += v;
y += v;
z += v;
其優良的,但有一個較短的方式來避免這種3行代碼(有+=
)和只有一個?我只是問自己,因爲我必須經常爲這些變量添加一些const,然後我必須添加總是+3行(或更多,如果我有xyz +變量)。
如果這種情況經常發生,您可能需要將它們放入課堂。例如,如果這些是虛擬頁面內的位置:
class PageLoc
{
public int Header { get; set; }
public int Body { get; set; }
public int Footer { get; set; }
void MoveAll(int distance) {
Header += distance;
Body += distance;
Footer += distance;
}
}
這樣,您可以獨立或共同更改它們的值。
包裹的X,Y,Z爲一類,寫一個方法將不斷添加到所有三:
class XYZ
{
public void Add (int v) { x += v; y += v; z += v; }
int x,y,x;
}
一些代碼,使用上面:
void F()
{
XYZ xyz;
xyz.Add (3);
}
當然,你可以通過重載+ =運算符以及其他運算符來改進上述內容。實際上,你已經創建了一個向量,並且有可用的庫已經實現了這個(可能在DirectX中)。
你可以定義一個方法來增加所有三個變量,並通過引用傳遞變量:
Add(ref x, ref y, ref z, 50);
與
void Add(ref int x, ref int y, ref int z, int v)
{
x += v;
y += v;
z += v;
}
_治療比疾病更糟!_但仍然是一個有效的答案。 ;-) – 2012-07-25 14:24:36
z += 0 * (y += 0 * (x += v) + v) + v;
Tadah:d
但我不不推薦使用這個!當然,更好的方法是創建一個方法。這也只會給你一行(+一個方法聲明)。
我只是嘔吐了一下。 :)但是,我讚賞你的努力,以準確回答OP的要求。 – Thelonias 2012-07-25 14:33:29
@Ryan一直在OP的服務! :D當然這是非常糟糕的,這就是爲什麼我反對它並給出了一個替代方案。 ^^ – brimborium 2012-07-25 14:48:16
您可以輕鬆使用循環。 – 2012-07-25 14:15:29
如果你經常爲這些變量添加一個常量,爲什麼不把它放在一個私有方法中,只是調用方法? – Thelonias 2012-07-25 14:17:31