【发布时间】:2015-10-28 06:12:18
【问题描述】:
这个“成语”有没有更好的办法?
if(State s = loadSomething()) { } else return s;
换句话说,我想做一些事情,它可能会返回错误(带有消息)或成功状态,如果有错误我想返回它。这可能会变得非常重复,所以我想缩短它。例如
if(State s = loadFoobar(&loadPointer, &results)) { } else return s;
if(State s = loadBaz(&loadPointer, &results)) { } else return s;
if(State s = loadBuz(&loadPointer, &results)) { } else return s;
这不能使用我喜欢的异常(不适合此构建)。我可以写一个小类BooleanNegator<State> 来存储值,并否定它的布尔评估。但我想避免做这种临时性的,而是更喜欢增强/标准解决方案。
【问题讨论】:
-
我认为 State 有一个布尔运算符,对吧?
-
@Brahim 没错,没错
-
并且您不想将
s的范围提升到if块之外,对吗? -
@CoryKramer 对。在成功的情况下,有一些信息,比如加载元素的加载地址和一些我并不总是需要的东西。
-
如果你能做类似
if(State s = loadSomething(), !s)这样的事情,最好的解决方案可能是将其中一个“嘈杂”的解决方案包装在一个宏中
标签: c++ if-statement boolean conditional-statements