Java8 if замена оператора с концепциями FP внутри блока try-catch - PullRequest
0 голосов
/ 16 сентября 2018

Может кто-нибудь показать мне способ заменить оператор if внутри блока try на концепции функционального программирования. Нет условных операторов, спасибо.

    Predicate<Integer> isNegativeOrZero = i -> i <= 0;
    try {
        if (isNegativeOrZero.test(n)) throw new java.lang.Error("Negative number");
        return process(n);
    } catch(Error e) {
        return STATE.ERROR;
    }

Замена этой строки кода:

if (isNegativeOrZero.test(n)) throw new java.lang.Error("Negative number");

1 Ответ

0 голосов
/ 16 сентября 2018

Итак, вы хотите следующее?

return i <= 0 ? STATE.ERROR : process(n);

В таком случае вам не будет проще, но вы можете написать

return Optional.of(n)
    .filter(i -> i > 0)
    .map(i -> process(i))
    .orElse(STATE.ERROR);

Короче, вам следует избегать использования исключений /Ошибки, где это возможно, особенно для контроля, но при функциональном программировании их нужно удалять, иначе это будет некрасиво.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...