Czym są kontynuacje Scali i dlaczego z nich korzystać?
właśnie skończyłemProgramowanie w Scalii przyglądałem się zmianom między Scala 2.7 a 2.8. Najważniejsza wydaje się wtyczka kontynuacji, ale nie rozumiem, do czego jest ona przydatna ani jak działa. Widziałem, że jest to dobre dla asynchronicznych operacji we / wy, ale nie byłem w stanie dowiedzieć się dlaczego. Niektóre z bardziej popularnych zasobów na ten temat to:
Ograniczone kontynuacje i ScalaPrzejdź do ScalaSmak 2.8: kontynuacjeObjaśniono kontynuacje z ograniczeniami (w Scali)I to pytanie na temat przepełnienia stosu:
Jakie są największe różnice między Scala 2.8 a Scala 2.7?Niestety, żadne z tych odniesień nie próbuje zdefiniować, do czego są kontynuowane ani co mają robić funkcje shift / reset, a ja nie znalazłem żadnych referencji. Nie byłem w stanie zgadnąć, jak działają przykłady w połączonych artykułach (lub co robią), więc jednym ze sposobów, aby mi pomóc, może być przejście przez jedną z tych próbek. Nawet ten prosty z trzeciego artykułu:
reset {
...
shift { k: (Int=>Int) => // The continuation k will be the '_ + 1' below.
k(7)
} + 1
}
// Result: 8
Dlaczego wynik 8? To prawdopodobnie pomoże mi zacząć.