Scan2
Aplica a função folder
em cada um par de elementos na mesma posição nas duas coleções, acumulando o resultado enquanto a percorre.
Este método considera o valor em state
como valor inicial e o resultado acumulado enquanto percorre as duas coleções.
Este método é semelhante ao Fold2
, mas neste caso os resultados intermediários também são retornados.
Parâmetros | Retorno |
---|---|
Func<TState, T, T2, TState> folder TState state IEnumerable<T> source IEnumerable<T2> source2 |
TState |
Como usar
Acumulando o maior valor na mesma posição de duas coleções
//IEnumerable<int> source = { 1, 2, 3 }
//IEnumerable<int> source2 = { 3, 2, 1 }
int result =
source.Scan2(
source2,
12,
(_state, element1, element2) =>
_state + Math.Max(element1, element2) );
//result = {15, 17, 20 }
Para operações comuns entre valores int
, decimal
, double
, string
e bool
você pode utilizar as operações como folder
.
Utilizando uma operação como folder
//IEnumerable<int> source = { 2, 3, 5, 0 }
//IEnumerable<int> source2 = { 3, 2, 0, 5 }
source.Scan2(source2, 30, IntegerOperations.Add3);
//result = { 35, 40, 45, 50}