LINUX.ORG.RU

История изменений

Исправление DarkEld3r, (текущая версия) :

...но даже без него, с наличием pattern matching ситуация уже не такая унылая, как в Си.

Паттерн матчин - это, разумеется, здорово. Хотя если функция у нас возвращает или ошибку или ничего и нам нужно просто пробросить ошибку дальше, то получается не лучше, чем в С. Впрочем, не буду утверждать, что именно такой код часто нужен:

if(ERROR == f1()) {
    return ERROR;
}

if(ERROR == f2()) {
    return ERROR;
}

...

match f1() {
    Err(e) => return Err(e),
    _ => ()
}

match f2() {
    Err(e) => return Err(e),
    _ => ()
}

...

Вложенные матчи мне нравятся ещё меньше.

Исходная версия DarkEld3r, :

...но даже без него, с наличием pattern matching ситуация уже не такая унылая, как в Си.

Паттерн матчин - это, разумеется, здорово. Хотя если функция у нас возвращает или ошибку или ничего и нам нужно просто пробросить ошибку дальше, то получается не лучше, чем в С. Впрочем, не буду утверждать, что именно такой код часто нужен:

if(ERROR == f1()) {
    return ERROR;
}

if(ERROR == f2()) {
    return ERROR;
}

...

match f1() {
    Err(e) => return Err(e),
    _ => ()
}

match f2() {
    Err(e) => return Err(e),
    _ => ()
}

...

Вложенные матчи мне нравятся ещё меньше.