Seq.cache<'T> — Funkcja (F#)
Zwraca odpowiadający sekwencji buforowaną wersję sekwencji wejściowych.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Collections.Seq
Zgromadzenie: FSharp.Core (w FSharp.Core.dll)
// Signature:
Seq.cache : seq<'T> -> seq<'T>
// Usage:
Seq.cache source
Parametry
source
Typ: seq<'T>Sekwencji wejściowych.
Wyjątki
Wyjątek |
Warunek |
---|---|
Zgłoszony podczas sekwencji wejściowych jest null. |
Wartość zwracana
Sekwencja wynik.
Uwagi
Ta sekwencja wynik będzie miał takie same elementy jako sekwencji wejściowych.Wynik można wyliczyć wiele razy.Sekwencji wejściowych jest wyliczany najwyżej raz i tylko tak dalece jak to jest konieczne.Buforowanie sekwencji jest zazwyczaj przydatny, gdy wielokrotnie ocena elementów w oryginalnej kolejności jest kosztowne w praktyce lub jeśli Iterowanie sekwencji powoduje skutków ubocznych, użytkownik nie chce być powtarzane wielokrotnie.Po rozpoczęciu wyliczenie sekwencji wejściowych, jego moduł wyliczający będą przechowywane aktywnego przez ten obiekt aż Wyliczanie zostało zakończone.W tym punkcie modułu wyliczającego zostaną usunięte.Moduł wyliczający może być pamięć podręczna zlikwidowany i podstawowej, wydany przez przekonwertowanie obiektu sekwencji zwracane do wpisz IDisposablei wywoływanie Dispose metody dla tego obiektu.Obiekt sekwencji może następnie zostać wyliczone i świeże modułu wyliczającego będą używane.
Ta funkcja o nazwie Cache w skompilowane zestawy.Jeżeli języka, niż F# lub przez odbicie, uzyskują dostęp do funkcji, należy użyć tej nazwy.
Przykład
Poniższy kod demonstruje, jak używać Seq.cache w celu uniknięcia recomputing elementów sekwencji.
// Recursive isprime function.
let isPrime n =
let rec check i =
i > n/2 || (n % i <> 0 && check (i + 1))
check 2
let seqPrimes = seq { for n in 2 .. 10000 do if isPrime n then yield n }
// Cache the sequence to avoid recomputing the sequence elements.
let cachedSeq = Seq.cache seqPrimes
for index in 1..5 do
printfn "%d is prime." (Seq.nth (Seq.length cachedSeq - index) cachedSeq)
Dane wyjściowe
Bezpieczeństwo wątków
Wyliczanie sekwencji wynik jest wielowątkowość w tym sensie, że wiele niezależnych od IEnumerator jednocześnie używane wartości z różnych wątków (dostępów do tabeli lookaside wewnętrznego są bezpieczne wątek).Poszczególne IEnumerator nie jest zazwyczaj wielowątkowość i nie powinny być jednocześnie dostęp.
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0, 4.0, przenośne