Перерыв и продолжить:
В своем выступлении о Scala Мартин Одерский назвал 3 причины не включать перерыв или продолжить работу на слайде 22:
- Они немного необходимы; лучше использовать много мелких функций.
- Вопросы, как взаимодействовать с замыканиями.
- Они не нужны!
И тогда он говорит: «Мы можем поддерживать их исключительно в библиотеках». На слайде 23 он дает код, который реализует break. Хотя я не достаточно хорошо знаю Scala, чтобы быть уверенным, похоже, что короткий фрагмент на этом слайде - это все, что нужно для реализации break, и это continueможет быть реализовано в коде, который также короток.
Возможность реализовывать подобные вещи в библиотеках упрощает основной язык.
В «Программировании в Scala, второе издание» Мартина Одерского, Лекса Спуна и Билла Веннерса дается следующее объяснение:
Возможно, вы заметили, что там не было упоминания breakили continue. Scala пропускает эти команды, потому что они плохо сочетаются с функциональными литералами ... Понятно, что continueозначает внутри whileцикла, но что это будет означать внутри литерала функции? ... Существует множество способов программирования без breakи continue, и, если вы используете функциональные литералы, эти альтернативы часто могут быть короче исходного кода.
Возвращение:
Возвраты могут считаться немного обязательными по стилю, поскольку return - это глагол, команда, которая что-то делает. Но их также можно увидеть в чисто функциональном / декларативном виде: они определяют, что является возвращаемым значением функции (даже если в функции с множественными возвращениями они дают только частичное определение).
В той же книге говорится о следующем return:
При отсутствии какого-либо явного returnутверждения метод Scala возвращает последнее значение, вычисленное методом. Рекомендуемый стиль для методов на самом деле состоит в том, чтобы избегать явных и особенно множественных returnоператоров. Вместо этого думайте о каждом методе как о выражении, которое возвращает одно значение, которое возвращается.
Методы завершают работу и возвращают значение, даже если returnоператор не используется, поэтому с замыканиями проблем быть не может, так как в противном случае замыкания не сработают.
Также не может быть проблем с зацеплением с функциональными литералами, так как функция все равно должна возвращать значение.
breakи мнеcontinueпонадобится дополнительная уборочная техника. OTOHreturn- это способ упорядоченного завершения функции, и любое оборудование для очистки уже существует.