這是令人失望的,你不能只寫:
(flag) ? function1() : function2();
但是,這不是有效的。
如果function1
和function2
返還相同種類,你可以寫:
var trash = (flag) ? function1() : function2();
這是否是更具可讀性是值得商榷的。
,當然,還有把一切在一行中的選項:
if (flag) function1(); else function2();
再次,可讀性是值得商榷的。如果這種事情在你的代碼中普遍存在,那麼可以說這是一種常見的習慣用法。但總的來說,我會在代碼審查中勸阻這樣的事情。
再次,如果它在你的代碼普遍的,你可以寫一個方法來爲您處理:
bool IfTrueFalseToggle(bool flag, Action trueFunc, Action falseFunc)
{
if (flag)
trueFunc();
else
falseFunc();
return !flag;
}
然後你會跟調用它:
flag = IfTrueFalseToggle(flag, function1, function2);
它可能需要一個更好的名字,除非我有很多使用它的代碼,否則我不會走這條路。另外,您可能最終不得不編寫數十億種不同的類似方法來處理您想與之通話的所有不同類型的Action
或Func
。
所有考慮的事情,我會說,一般來說,你有什麼是乾淨的,因爲它會得到。
我假設'bool flag = true'是爲了超出for循環嗎? – 2011-03-01 17:49:59
呵呵,是的,你可以。謝謝你;) – 2011-03-01 17:51:08
你的例子寫入標誌的方式永遠是真的嗎? – 2011-03-01 17:51:28