Partager via


List.foldBack2<'T1,'T2,'State>, fonction (F#)

Applique une fonction aux éléments correspondants de deux collections, en créant ainsi un thread d'un argument d'accumulation par l'intermédiaire du calcul. Les collections doivent avoir des tailles identiques. Si la fonction d'entrée est f et que les éléments sont i0...iN et j0...jN, cette fonction calcule alors f i0 j0 (...(f iN jN s)).

Espace de noms/Chemin du module : Microsoft.FSharp.Collections.List

Assembly : FSharp.Core (in FSharp.Core.dll)

// Signature:
List.foldBack2 : ('T1 -> 'T2 -> 'State -> 'State) -> 'T1 list -> 'T2 list -> 'State -> 'State

// Usage:
List.foldBack2 folder list1 list2 state

Paramètres

  • folder
    Type : 'T1 -> 'T2 -> 'State -> 'State

    Fonction permettant de mettre à jour l'état selon les éléments d'entrée.

  • list1
    Type : 'T1 list

    Première liste d'entrée.

  • list2
    Type : 'T2 list

    Deuxième liste d'entrée.

  • state
    Type : 'State

    État initial.

Valeur de retour

Valeur d'état finale.

Exceptions

Exception

Condition

ArgumentException

Levée lorsque la longueur des listes d'entrée diffère.

Notes

Cette fonction se nomme FoldBack2 dans les assemblys compilés. Si vous accédez à la fonction à partir d'un langage .NET autre que F# ou par réflexion, utilisez ce nom.

Les exemples de code suivants illustrent la différence entre List.fold2 et List.foldBack2.

Exemple

type Transaction2 =
    | Deposit
    | Withdrawal
    | Interest

let transactionTypes2 = [Deposit; Deposit; Withdrawal; Interest]
let transactionAmounts2 = [100.00; 1000.00; 95.00; 0.05 / 12.0 ]
let initialBalance2 = 200.00

// Because fold2 processes the lists by starting at the head element,
// the interest is calculated last, on the balance of 1205.00.
let endingBalance2 = List.fold2 (fun acc elem1 elem2 ->
                                match elem1 with
                                | Deposit -> acc + elem2
                                | Withdrawal -> acc - elem2
                                | Interest -> acc * (1.0 + elem2))
                                initialBalance2
                                transactionTypes2
                                transactionAmounts2
printfn "%f" endingBalance2

Sortie

  
// Because foldBack2 processes the lists by starting at end of the list,
// the interest is calculated first, on the balance of only 200.00.
let endingBalance3 = List.foldBack2 (fun elem1 elem2 acc ->
                                match elem1 with
                                | Deposit -> acc + elem2
                                | Withdrawal -> acc - elem2
                                | Interest -> acc * (1.0 + elem2))
                                transactionTypes2
                                transactionAmounts2
                                initialBalance2
printfn "%f" endingBalance3

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

Collections.List, module (F#)

Microsoft.FSharp.Collections, espace de noms (F#)

Historique des modifications

Date

Historique

Motif

Mai 2010

Ajout d'exemples de code.

Améliorations apportées aux informations.