SEQ.cache <'T>. Função (F#)
Retorna uma seqüência que corresponde a uma versão em cache a seqüência de entrada.
Namespace/Module Path: Microsoft.FSharp.Collections.Seq
Assembly: FSharp.Core (em FSharp.Core.dll)
// Signature:
Seq.cache : seq<'T> -> seq<'T>
// Usage:
Seq.cache source
Parâmetros
source
Tipo: seq<'T>a seqüência de entrada.
Exceções
Exceção |
Condição |
---|---|
Acionada quando a seqüência de entrada seja nulo. |
Valor de retorno
A seqüência de resultado.
Comentários
Essa seqüência de resultado terá os mesmos elementos que a seqüência de entrada.o resultado pode ser enumerado várias vezes.A seqüência de entrada é enumerada no máximo uma vez e até é necessário.Armazenar em cache uma seqüência normalmente é útil quando classificar repetidamente itens na seqüência original é computacionalmente cara ou se iterar a seqüência faz com que os efeitos colaterais que o usuário não quer ser repetido várias vezes.Uma vez que a seqüência de enumeração de entrada foi iniciado, o enumerador será mantida ativa por esse objeto até que a enumeração terminar.Em esse ponto, o enumerador será descartado.O enumerador pode ser descartado e armazenamento subjacente de cache ser convertido o objeto retornado da seqüência a IDisposable, digite e chamando o método de Dispose em este objeto.O objeto da seqüência pode então ser enumerado novamente e um enumerador atualizado será usado.
Essa função é chamada Cache em assemblies compilados.Se você está acessando a função de um idioma diferente F#, ou com a reflexão, use este nome.
Exemplo
O exemplo de código demonstra como usar Seq.cache para evitar recomputing os elementos de uma seqüência.
// 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)
Saída
Segurança de Segmentos
A seqüência de enumeração do resultado é segura no sentido que os valores independentes de IEnumerator de múltiplas podem ser usados simultaneamente threads diferentes (os acessos à tabela lookaside interna são thread-safe.)Cada IEnumerator individual geralmente não é thread-safe e não deve ser acessado simultaneamente.
Plataformas
O windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informações de Versão
Versões da biblioteca principal de F#
Suportado em: 2,0, 4,0, portáteis