List.scanBack<'T,'State>, fonction (F#)
Comme List.foldBack, mais retourne les résultats intermédiaires et finaux.
Espace de noms/Chemin du module : Microsoft.FSharp.Collections.List
Assembly : FSharp.Core (in FSharp.Core.dll)
// Signature:
List.scanBack : ('T -> 'State -> 'State) -> 'T list -> 'State -> 'State list
// Usage:
List.scanBack folder list state
Paramètres
folder
Type : 'T -> 'State -> 'StateFonction permettant de mettre à jour l'état selon les éléments d'entrée.
list
Type : 'T listListe d'entrée.
state
Type : 'StateÉtat initial.
Valeur de retour
Liste des états.
Notes
Cette fonction se nomme ScanBack dans les assemblys compilés. Si vous accédez à la fonction à partir d'un langage autre que F# ou par réflexion, utilisez ce nom.
Exemple
L'exemple de code suivant montre comment utiliser List.scanBack et contraste également son comportement avec List.scan..
// A list of functions that transform
// integers. (int -> int)
let ops1 =
[ (fun x -> x + 1), "add 1"
(fun x -> x + 2), "add 2"
(fun x -> x - 5), "subtract 5" ]
let ops2 =
[ (fun x -> x + 1), "add 1"
(fun x -> x * 5), "multiply by 5"
(fun x -> x * x), "square" ]
// Compare scan and scanBack, which apply the
// operations in the opposite order.
let compareOpOrder ops x0 =
let ops, opNames = List.unzip ops
let xs1 = List.scan (fun x op -> op x) x0 ops
let xs2 = List.scanBack (fun op x -> op x) ops x0
printfn "Operations:"
opNames |> List.iter (fun opName -> printf "%s " opName)
printfn ""
// Print the intermediate results.
let xs = List.zip xs1 (List.rev xs2)
printfn "List.scan List.scanBack"
for (x1, x2) in xs do
printfn "%10d %10d" x1 x2
printfn ""
compareOpOrder ops1 10
compareOpOrder ops2 10
Sortie
Plateformes
Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Informations de version
Runtime F#
Pris en charge dans : 2.0, 4.0
Silverlight
Prise en charge dans : 3
Voir aussi
Référence
Microsoft.FSharp.Collections, espace de noms (F#)
Historique des modifications
Date |
Historique |
Motif |
---|---|---|
Août 2010 |
Ajout d'un exemple de code |
Améliorations apportées aux informations. |