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 -> 'StateVerilen giriş öğelerine göre durumu güncellemek için işlev.
state
Türü:'StateBaş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 |
---|---|
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