Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica una función a los elementos correspondientes de dos colecciones y subprocesa un argumento acumulador durante el cálculo. Las colecciones deben tener el mismo tamaño. Si la función de entrada es f y los elementos son i0...iN y j0...jN, calcula f (... (f s i0 j0)...) iN jN.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Collections.List
Ensamblado: FSharp.Core (en FSharp.Core.dll)
// Signature:
List.fold2 : ('State -> 'T1 -> 'T2 -> 'State) -> 'State -> 'T1 list -> 'T2 list -> 'State
// Usage:
List.fold2 folder state list1 list2
Parámetros
folder
Tipo: 'State -> 'T1 -> 'T2 -> 'StateFunción que se usa para actualizar el estado asignado a los elementos de entrada.
state
Tipo: 'StateEstado inicial.
list1
Tipo: 'T1 listaPrimera lista de entrada.
list2
Tipo: 'T2 listaSegunda lista de entrada.
Valor devuelto
Valor de estado final.
Excepciones
Excepción |
Condition |
|---|---|
Se produce cuando las listas de entrada tienen longitudes diferentes. |
Comentarios
Esta función se denomina Fold2 en los ensamblados compilados. Si obtiene acceso a la función desde un lenguaje .NET distinto de F# o mediante reflexión, use este nombre.
Ejemplo
En el siguiente ejemplo de código, se muestra el uso de 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
Output
En el ejemplo de código siguiente se muestra el uso de List.fold2 para calcular el saldo final de una cuenta bancaria después de una serie de transacciones. Las dos listas de entrada representan el tipo de transacción (ingreso o disposición de fondos) y el importe de la misma.
// 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
Output
Plataformas
Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Información de versiones
Runtime de F#
Se admite en las versiones: 2.0, 4.0
Silverlight
Se admite en la versión: 3
Vea también
Referencia
Collections.List (Módulo de F#)
Microsoft.FSharp.Collections (Espacio de nombres de F#)
Historial de cambios
Fecha |
Historial |
Motivo |
|---|---|---|
|
Mayo de 2010 |
Se han agregado ejemplos de código. |
Mejora de la información. |