List.fold2<'T1,'T2,'State> İşlevi (F#)

Bir işlevi iki koleksiyonun öğelerine accumulator bağımsız değişken hesaplama iş parçacığı ile uygular.Koleksiyonların boyutunun aynı olması gerekir.Giriş işlevi f ve öğeler i0...iN ve j0...jN ise f (... (f s i0 j0)...) iN jN'i hesaplar.

Ad alanı/modül yolu: Microsoft.FSharp.Collections.List

Derleme: FSharp.Core (FSharp.Core.dll),

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

// Usage:
List.fold2 folder state list1 list2

Parametreler

  • folder
    Türü:'State -> 'T1 -> 'T2 -> 'State

    Verilen giriş öğelerine göre durumu güncellemek için işlev.

  • state
    Türü:'State

    Başlangıç durumu.

  • list1
    Type: 'T1list

    İlk giriş listesi.

  • list2
    Type: 'T2list

    İkinci giriş listesi.

Dönüş Değeri

Son durum değeri.

Özel Durumlar

Özel Durum

Koşul

ArgumentException

Giriş listelerinin uzunluğunu farklı olduğu zaman oluşturulur.

Notlar

Bu işlev adlı Fold2 kodları derlenmiş derlemeleri.İşlev .net Dili dışındaki F# veya yansıtma üzerinden erişiyorsanız, bu adı kullanın.

Örnek

Aşağıdaki kod örneği kullanımları gösterilmektedir 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

Çıktı

  

Aşağıdaki kod örneği kullanımları gösterilmektedir List.fold2 hareketleri bir dizi sonra bir banka hesabında bitiş bakiyesini hesaplamak için.İki giriş listeleri hareket tipini (havale veya mevzuatı) ve hareket tutarını gösterir.

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

Çıktı

  

Platformlar

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

Sürüm Bilgisi

F# Çekirdek Kitaplığı sürümleri

Desteklenen: 2.0, 4.0, Portable

Ayrıca bkz.

Başvuru

Collections.List Modülü (F#)

Microsoft.FSharp.Collections Ad Alanı (F#)