2014-03-13 152 views
-1

如果我有下面的代碼行下面有什麼辦法,我可以凝結成1或2行,並使用循環或類似的東西?有超過100個索引,所以它是大量的文字寫出來。凝聚行代碼

unrlzdPnl = 
(((Positions[0].GetProfitLoss(Closes[0][0], PerformanceUnit.Points))*200) 
+ ((Positions[1].GetProfitLoss(Closes[1][0], PerformanceUnit.Points))*200) 
+ ((Positions[2].GetProfitLoss(Closes[2][0], PerformanceUnit.Points))*200) 
+ ((Positions[3].GetProfitLoss(Closes[3][0], PerformanceUnit.Points))*200) 
+ ((Positions[4].GetProfitLoss(Closes[4][0], PerformanceUnit.Points))*200) 
+ ((Positions[5].GetProfitLoss(Closes[5][0], PerformanceUnit.Points))*200) 
+ ((Positions[6].GetProfitLoss(Closes[6][0], PerformanceUnit.Points))*200) 
); 
+0

什麼是語言? Java?我們編輯補充說,請添加更多細節您的問題。 – Jayan

+0

這個問題是回答?你的意思是不同的? – Tonio

回答

0

也許我不明白這一點,但我會說:

int unrlzPnl = 0; 
for (int i = 0; i < nb_indices; i++) { 
    unrlzdPnl += Positions[i].GetProfitLoss(Closes[i][0], 
              PerformanceUnit.Points); 
} 
unrlzPnl *= 200; 

編輯#1:

不要忘記循環之前初始化unrlzPnl。如果你想看到在每次迭代發生的事情(假設你使用Java):

int unrlzPnl = 0; 
for (int i = 0; i < nb_indices; i++) { 
    System.out.println("Iteration " + i + ":"); 
    System.out.println("unrlzdPnl (old): " + unrlzdPnl); 
    unrlzdPnl += Positions[i].GetProfitLoss(Closes[i][0], 
              PerformanceUnit.Points); 
    System.out.println("unrlzdPnl (new): " + unrlzdPnl + "\n"); 
} 
return unrlzPnl * 200; 
System.out.println("unrlzdPnl (final value): " + unrlzdPnl); 

編輯#2:

好吧,如果你真的希望它儘可能的緊湊並避免每次調用函數時進行初始化:

int MyFunction(int nb_indices) { 
    if (1 > nb_indices) 
     return 0; 

    unrlzdPnl = Positions[0].GetProfitLoss(Closes[0][0], 
              PerformanceUnit.Points); 

    for (int i = 1; i < nb_indices; i++) 
     unrlzdPnl += Positions[i].GetProfitLoss(Closes[i][0], 
               PerformanceUnit.Points); 

    return unrlzPnl * 200; 
} 
+0

不,我認爲你知道了,我只是不知道簡單的代碼,+ =就是我所需要的。謝謝 – user2850280

+0

其實我似乎得到不同的結果,是for(int i = 0; i <2; i ++){unrlzdPnl + = Positions [i] .GetProfitLoss(Closes [i] [0],PerformanceUnit.Points); }等價於.. unrlzdPnl =((Positions [0] .GetProfitLoss(Closes [0] [0],PerformanceUnit.Points))+(Positions [1] .GetProfitLoss(Closes [1] [0],PerformanceUnit.Points) )); – user2850280

+0

是的,應該是。如果你想確定,你可以在循環內打印出一行,它會告訴你程序在每次迭代時會循環多少次以及變量的值。 – Tonio