Funzione List.fold2<'T1,'T2,'State> (F#)
Applica una funzione agli elementi corrispondenti di due raccolte, eseguendo il threading di un argomento dell'accumulatore attraverso il calcolo.Le dimensioni delle raccolte devono coincidere.Se la funzione di input è f e gli elementi sono i0...iN e j0...jN, calcola f (... (f s i0 j0)...) iN jN.
Percorso di spazio dei nomi/modulo: 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
Parametri
folder
Tipo: 'State -> 'T1 -> 'T2 -> 'StateFunzione da utilizzare per aggiornare lo stato in base agli elementi di input.
state
Tipo: 'StateStato iniziale.
list1
Tipo: 'T1listPrimo elenco di input.
list2
Tipo: 'T2listSecondo elenco di input.
Valore restituito
Valore dello stato finale.
Eccezioni
Eccezione |
Condizione |
---|---|
Generata se gli elenchi di input differiscono in lunghezza. |
Note
Questa funzione è denominata Fold2 negli assembly compilati.Utilizzare questo nome se si accede alla funzione da un linguaggio .NET diverso da F# o tramite reflection.
Esempio
Nell'esempio di codice seguente viene illustrato l'utilizzo di 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
Output
Nell'esempio di codice riportato di seguito viene illustrato l'utilizzo di List.fold2 per calcolare il bilancio finale in un conto bancario dopo una serie di transazioni.I due elenchi di input rappresentano il tipo di transazione (deposito o prelievo) e l'importo della transazione.
// 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
Output
Piattaforme
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informazioni sulla versione
Versioni della libreria di base F#
Supportato in: 2,0, 4,0, portabile