Aracılığıyla paylaş


Seq.cache<'T> İşlevi (F#)

Giriş dizisine karşılık gelen önbelleğe alınmış bir dizi sürümü döndürür.

Ad alanı/modül yol: Microsoft.FSharp.Collections.Seq

Derleme: FSharp.Core (FSharp.Core.dll),

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

// Usage:
Seq.cache source

Parametreler

  • source
    Türü: seq<'T>

    Giriş dizisi.

Özel Durumlar

Özel Durum

Koşul

ArgumentNullException

Giriş dizisi null olduğunda oluşturulur.

Dönüş Değeri

Sonuç dizisi.

Notlar

Bu sonuç dizisi giriş dizisi ile aynı öğelere sahip olacaktır. Sonuç birden çok kez numaralandırılabilir. Girdi sırası en fazla bir kez ve yalnızca en gerekli olduğu gibi numaralandırılır. Özgün dizideki öğeleri tekrar tekrar değerlendirmek hesaplama açısından pahalı olduğunda veya diziyi yinelemek kullanıcının birden çok kez yinelenmesini istemediği yan etkilere neden olduğunda bir diziyi önbelleğe almak genellikle yararlıdır. Giriş sıra numaralandırma başladıktan sonra numaralandırma tamamlanıncaya kadar numaralayıcı bu nesne tarafından etkin saklanacaktır. Bu noktada, numaralandırıcı bırakılır. Numaralayıcı yazmak için döndürülen sıra nesnesi dönüştürerek serbest bırakılmış ve alttaki önbellek depolama olabilir IDisposableve Dispose yöntemi bu nesne üzerinde. Daha sonra dizi nesnesi yeniden numaralandırılabilir ve yeni bir numaralandırıcı kullanılır.

Bu işlev adlı Cache kodları derlenmiş derlemeleri. İşlev yansıtma veya F# dışındaki bir dilde erişiyorsanız, bu adı kullanın.

Örnek

Aşağıdaki kod örneği nasıl kullanılacağını göstermektedir Seq.cache bir dizi öğelerini yeniden oluşturmak önlemek için.

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

Çıktı

  
  
  
  
  

İş parçacığı güvenliği

Sonuç sıra numaralandırma thread-safe anlam olarak, birden çok bağımsız IEnumerator değerler kullanılabilir aynı anda farklı iş parçacığından (iç arabelleğinde tablo erişimleri thread-safe). Her IEnumerator genellikle iş parçacığı güvenli değildir ve aynı anda erişilmesi gereken değil.

Platformlar

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

Sürüm Bilgisi

F# Çekirdek Kitaplığı sürümleri

Desteklenen: 2.0, 4.0, Portable

Ayrıca bkz.

Başvuru

Collections.Seq Modülü (F#)

Microsoft.FSharp.Collections İsim Uzayı (F#)