Aracılığıyla paylaş


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 şeklinde hesaplar.

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

Derleme: FSharp.Core (FSharp.Core.dll içinde)

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

// Usage:
List.fold2 folder state list1 list2

Parametreler

  • folder
    Aşağıdakini yazın: 'State -> 'T1 -> 'T2 -> 'State

    Verilen giriş öğeleri ile durumu güncellemek için işlev.

  • state
    Tür: 'State

    Başlangıç durumu.

  • list1
    Aşağıdakini yazın: 'T1 Liste

    İlk giriş listesi.

  • list2
    Tür: 'T2 Liste

    İkinci giriş listesi.

Dönüş Değeri

Son durum değeri.

Özel Durumlar

Exception

Koşul

ArgumentException

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

Açıklamalar

Bu işlev adlı Fold2 derlenmiş derlemeleri. İşlevin erişiyorsanız bir.f # dışında veya yansıtma üzerinden dil net, 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 bir banka hesabında bir dizi sonra bitiş bakiyesini hesaplamak içinhareketler. İki giriş listesi (havale veya mevzuatı) hareket türü 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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Sürüm Bilgisi

F# Çalışma Zamanı

Desteklenir: 2.0, 4.0

Silverlight

Desteklenir: 3

Ayrıca bkz.

Başvuru

Collections.List Modülü (F#)

Microsoft.FSharp.Collections İsim Uzayı (F#)

Değişiklik Geçmişi

Tarih

Geçmiş

Nedeni

Mayıs 2010

Eklenen kod örnekleri.

Bilgi geliştirme.