Есть ли лучший способ для этой "идиомы"?
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>
, который сохраняет значение и отрицает его логическую оценку. Но я хочу избежать этого ad-hoc и предпочитаю решение для повышения/стандартизации.