Перерыв и продолжить:
В своем выступлении о 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
- это способ упорядоченного завершения функции, и любое оборудование для очистки уже существует.