这是令人失望的,你不能只写:
(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