История изменений
Исправление monk, (текущая версия) :
И каким раком MyObj some(42) тип MyObj примет объект типа Error?
А он и не примет. Если написать
some = get_some();
где get_some может вернуть ошибку, то не скомпилируется.
Надо писать
if (get_some()) |good_result| {
some = good_result;
} else |err| switch (err) {
error.Bad_Some => {
// обрабатываем ошибку
},
...
}
или
some = try get_some();
если как обрабатывать ошибку пока неизвестно.
Даже a+f(b). И даже plus(a, f(b))
Почему? Это как раз можно, если f(b) не вызывает ошибок. Если может вызывать, то a + try f(b), plus(a, try f(b)).
Если бы в Zig были операторы, возвращающие ошибку, то (try a+b) + c.
Исходная версия monk, :
И каким раком MyObj some(42) тип MyObj примет объект типа Error?
А он и не примет. Если написать
some = get_some();
где get_some может вернуть ошибку, то не скомпилируется.
Надо писать
if (get_some()) |good_result| {
some = good_result;
} else |err| switch (err) {
error.Bad_Some => {
// обрабатываем ошибку
},
...
}
или
some = try get_some();
если как обрабатывать ошибку пока неизвестно.
Даже a+f(b). И даже plus(a, f(b))
Почему это как раз можно, если f(b) не вызывает ошибок. Если может вызывать, то a + try f(b), plus(a, try f(b)).
Если бы в Zig были операторы, возвращающие ошибку, то (try a+b) + c.