Я только что закончил Программирование в Scala, и я изучал изменения между Scala 2.7 и 2.8. Одним из наиболее важных является плагин продолжения, но я не понимаю, для чего он полезен или как он работает. Я видел, что это хорошо для асинхронного ввода-вывода, но я не смог выяснить, почему. Некоторые из наиболее популярных ресурсов по этому вопросу:
- Ограниченные продолжения и Scala
- Перейти в Scala
- Вкус 2.8: Продолжения
- Разграниченные континуты Разъяснения (в Scala)
И этот вопрос о Stack Overflow:
К сожалению, ни одна из этих ссылок не пытается определить, для каких продолжений или для чего должны выполняться функции shift/ reset, и я не нашел ссылок, которые делают. Я не мог догадаться, как работает какой-либо из примеров в связанных статьях (или что они делают), поэтому одним из способов помочь мне может стать переход по одному из этих образцов. Даже этот простой из третьей статьи:
reset {
...
shift { k: (Int=>Int) => // The continuation k will be the '_ + 1' below.
k(7)
} + 1
}
// Result: 8
Почему результат 8? Возможно, это поможет мне начать.