Freigeben über


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

Wendet eine Funktion auf zusammengehörende Elemente in zwei Auflistungen an, wobei ein Akkumulatorargument in der Berechnung mitgeführt wird.Die Auflistungen müssen dieselbe Größe haben.Ist die Eingabefunktion f und sind die Elemente i0...iN und j0...jN, berechnet diese Funktion f i0 j0 (...(f iN jN s)).

Namespace/Modulpfad: 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

Parameter

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

    Die Funktion, mit der der Zustand der Eingabeelemente aktualisiert wird.

  • list1
    Typ: 'T1list

    Die erste Eingabeliste.

  • list2
    Typ: 'T2list

    Die zweite Eingabeliste.

  • state
    Typ: 'State

    Der Ausgangszustand.

Rückgabewert

Der endgültige Zustandswert.

Ausnahmen

Ausnahme

Bedingung

ArgumentException

Wird ausgelöst, wenn die Eingabelisten unterschiedlich lang sind.

Hinweise

Der Name dieser Funktion in kompilierten Assemblys lautet FoldBack2.Verwenden Sie diesen Namen, wenn Sie in einer anderen .NET-Sprache als F# oder durch Reflektion auf die Funktion zugreifen.

In den folgenden Codebeispielen wird der Unterschied zwischen List.fold2 und List.foldBack2 veranschaulicht.

Beispiel

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

Output

  
// 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

Output

  

Plattformen

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Versionsinformationen

F#-Kern-Bibliotheks-Versionen

Unterstützt in: 2,0, 4,0, portablen

Siehe auch

Referenz

Collections.List-Modul (F#)

Microsoft.FSharp.Collections-Namespace (F#)