List.fold2<'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, calcule alors f (... (f s i0 j0)...) iN jN.
Espace de noms/Chemin du module : Microsoft.FSharp.Collections.List
Assembly : FSharp.Core (in FSharp.Core.dll)
// Signature:
List.fold2 : ('State -> 'T1 -> 'T2 -> 'State) -> 'State -> 'T1 list -> 'T2 list -> 'State
// Usage:
List.fold2 folder state list1 list2
Paramètres
folder
Type : 'State -> 'T1 -> 'T2 -> 'StateFonction permettant de mettre à jour l'état selon les éléments d'entrée.
state
Type : 'StateÉtat initial.
list1
Type : 'T1 listPremière liste d'entrée.
list2
Type : 'T2 listDeuxième liste d'entrée.
Valeur de retour
Valeur d'état finale.
Exceptions
Exception |
Condition |
---|---|
Levée lorsque la longueur des listes d'entrée diffère. |
Notes
Cette fonction se nomme Fold2 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.
Exemple
L'exemple de code suivant illustre l'utilisation de List.fold2.
// Use List.fold2 to perform computations over two lists (of equal size) at the same time.
// Example: Sum the greater element at each list position.
let sumGreatest list1 list2 = List.fold2 (fun acc elem1 elem2 ->
acc + max elem1 elem2) 0 list1 list2
let sum = sumGreatest [1; 2; 3] [3; 2; 1]
printfn "The sum of the greater of each pair of elements in the two lists is %d." sum
Sortie
L'exemple de code suivant illustre l'utilisation de List.fold2 pour calculer l'équilibre de fin dans un compte bancaire après une série de transactions. Les deux listes d'entrée représentent le type de transaction (dépôt ou retrait) et le montant de la transaction.
// Discriminated union type that encodes the transaction type.
type Transaction =
| Deposit
| Withdrawal
let transactionTypes = [Deposit; Deposit; Withdrawal]
let transactionAmounts = [100.00; 1000.00; 95.00 ]
let initialBalance = 200.00
// Use fold2 to perform a calculation on the list to update the account balance.
let endingBalance = List.fold2 (fun acc elem1 elem2 ->
match elem1 with
| Deposit -> acc + elem2
| Withdrawal -> acc - elem2)
initialBalance
transactionTypes
transactionAmounts
printfn "%f" endingBalance
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 |
---|---|---|
Mai 2010 |
Ajout d'exemples de code. |
Améliorations apportées aux informations. |