优雅的方式为"if(T t = ...){} else返回t;"?

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)

但我不确定它是否更优雅,而且它的可读性肯定更低......

  • 有趣!:)但我想我不想在代码中看到它:P (11认同)
  • 啊,它绝对有创意! (6认同)