Share via


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: 'T1 list

    Die erste Eingabeliste.

  • list2
    Typ: 'T2 list

    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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Versionsinformationen

F#-Runtime

Unterstützt in: 2.0, 4.0

Silverlight

Unterstützt in: 3

Siehe auch

Weitere Ressourcen

Collections.List-Modul (F#)

Microsoft.FSharp.Collections-Namespace (F#)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Mai 2010

Codebeispiele hinzugefügt.

Informationsergänzung.