Was sind Scala-Fortsetzungen und warum werden sie verwendet?

Ich bin fertigProgrammieren in Scalaund ich habe mich mit den Änderungen zwischen Scala 2.7 und 2.8 befasst. Das wichtigste scheint das Fortsetzungs-Plugin zu sein, aber ich verstehe nicht, wofür es nützlich ist oder wie es funktioniert. Ich habe gesehen, dass es für asynchrone E / A gut ist, konnte aber nicht herausfinden, warum. Einige der beliebtesten Ressourcen zu diesem Thema sind:

Begrenzte Fortsetzungen und ScalaGehen Sie in ScalaEin Vorgeschmack auf 2.8: FortsetzungenErläuterungen zu begrenzten Fortsetzungen (in Scala)

Und diese Frage zum Stack Overflow:

Was sind die größten Unterschiede zwischen Scala 2.8 und Scala 2.7?

Leider versucht keine dieser Referenzen zu definieren, wofür Fortsetzungen sind oder was die Shift / Reset-Funktionen tun sollen, und ich habe keine Referenzen gefunden, die dies tun. Ich habe nicht erraten können, wie eines der Beispiele in den verlinkten Artikeln funktioniert (oder was sie tun). Eine Möglichkeit, mir zu helfen, könnte darin bestehen, eines dieser Beispiele Zeile für Zeile durchzugehen. Schon dieses einfache aus dem dritten Artikel:

reset {
    ...
    shift { k: (Int=>Int) =>  // The continuation k will be the '_ + 1' below.
        k(7)
    } + 1
}
// Result: 8

Warum ist das Ergebnis 8? Das würde mir wahrscheinlich helfen, anzufangen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage