Joh*_*itb 12 c++ if-statement boolean conditional-statements
这个"成语"有更好的方法吗?
if(State s = loadSomething()) { } else return s;
Run Code Online (Sandbox Code Playgroud)
换句话说,我想做一些事情,可能会返回错误(带有消息)或成功状态,如果有错误,我想返回它.这可能变得非常重复,所以我想缩短它.例如
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;
Run Code Online (Sandbox Code Playgroud)
这不能使用我不喜欢的异常(不适合这个版本).我可以写一个BooleanNegator<State>存储值的小类,并否定它的布尔值.但我想避免这样做,并且更喜欢增强/标准解决方案.
Mak*_*jov 10
你可以这样做:
for (State s = loadSomething(); !s; ) return s;
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否更优雅,而且它的可读性肯定更低......