Sdílet prostřednictvím


Seq.cache<'T> – funkce (F#)

Vrátí číselné řady, která odpovídá verzi vstupní posloupnosti uložené v mezipaměti.

Cesta k oboru názvů nebo modul: Microsoft.FSharp.Collections.Seq

Sestavení: FSharp.Core (v FSharp.Core.dll)

// Signature:
Seq.cache : seq<'T> -> seq<'T>

// Usage:
Seq.cache source

Parametry

  • source
    Typ: SEQ.<'T>

    Vstupní sekvence.

Výjimky

Výjimka

Podmínka

ArgumentNullException

Vyvolána při vstupní posloupnost je null.

Vrácená hodnota

Řada výsledků.

Poznámky

Tato posloupnost výsledek bude mít stejné prvky jako vstupní sekvence.Výsledek lze vytvořit výčet vícekrát.Vstupní posloupnosti výčtu maximálně jednou a pouze pokud je to nutné.Ukládání do mezipaměti posloupnost je obvykle užitečné, když opakovaně hodnocení v původním pořadí položek je výpočetně náročné nebo pokud iterace sekvence má vedlejší účinky, které uživatel nechce opakovat vícekrát.Po spuštění výčtu vstupní sekvence jeho výčtu budou uchovány aktivní tímto objektem dokud výčtu.V tomto okamžiku bude realizována čítače výčtu.Čítač může být vyřazený a podkladové mezipaměti úložiště uvolní převedením objektu vráceného sekvenci zadejte IDisposablea volání Dispose metoda pro tento objekt.Objekt sekvence může být proveden znovu a bude použit čerstvé enumerator.

Tato funkce se nazývá Cache v kompilovaný sestavení.Pokud přistupujete k funkci jazyka než F# nebo prostřednictvím reflexe, tento název použijte.

Příklad

Následující příklad kódu ukazuje, jak použít Seq.cache , aby recomputing prvky sekvence.

// 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)

Výsledek

  
  
  
  
  

Zabezpečení vlákna

Výčet sekvence výsledek je podprocesu v tom smyslu, že více nezávislých IEnumerator hodnoty mohou být použity současně z různých podprocesů (podprocesu jsou přístupy k tabulce vnitřní lookaside).Jednotlivé IEnumerator není obvykle bezpečné podprocesy a neměli přístup souběžně.

Platformy

Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2

Informace o verzi

F# základní verze knihovny

Podporovány: 2.0, 4.0, přenosné

Viz také

Referenční dokumentace

Collections.Seq – modul (F#)

Microsoft.FSharp.Collections – obor názvů (F#)