RxPY - Operadores de transformação
amortecedor
Esse operador coletará todos os valores da fonte observável e os emitirá em intervalos regulares assim que a condição de contorno fornecida for satisfeita.
Sintaxe
buffer(boundaries)
Parâmetros
limites: A entrada é observável que decidirá quando parar para que os valores coletados sejam emitidos.
Valor de retorno
O valor de retorno é observável, que terá todos os valores coletados da fonte com base observável e que a duração do tempo é decidida pela entrada observável tomada.
Exemplo
from rx import of, interval, operators as op
from datetime import date
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.buffer(interval(1.0))
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
Resultado
E:\pyrx>python test1.py
The elements are [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ground_by
Este operador agrupará os valores provenientes da fonte observável com base na função key_mapper fornecida.
Sintaxe
group_by(key_mapper)
Parâmetros
key_mapper: Esta função cuidará da extração das chaves da fonte observável.
Valor de retorno
Ele retorna um observável com valores agrupados com base na função key_mapper.
Exemplo
from rx import from_, interval, operators as op
test = from_(["A", "B", "C", "D"])
sub1 = test.pipe(
op.group_by(lambda v: v[0])
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
Resultado
E:\pyrx>python testrx.py
The element is <rx.core.observable.groupedobservable.GroupedObservable object
at
0x000000C99A2E6550>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
0x000000C99A2E65C0>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
0x000000C99A2E6588>
The element is <rx.core.observable.groupedobservable.GroupedObservable object at
0x000000C99A2E6550>
mapa
Este operador irá alterar cada valor da fonte observável em um novo valor com base na saída do mapper_func fornecido.
Sintaxe
map(mapper_func:None)
Parâmetros
mapper_func: (opcional) irá alterar os valores da fonte observável com base na saída proveniente desta função.
Exemplo
from rx import of, interval, operators as op
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.map(lambda x :x*x)
)
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
Resultado
E:\pyrx>python testrx.py
The element is 1
The element is 4
The element is 9
The element is 16
The element is 25
The element is 36
The element is 49
The element is 64
The element is 81
The element is 100
Varredura
Este operador aplicará uma função de acumulador aos valores provenientes da fonte observável e retornará um observável com novos valores.
Sintaxe
scan(accumulator_func, seed=NotSet)
Parâmetros
acumulator_func: esta função é aplicada a todos os valores da fonte observável.
seed: (opcional) O valor inicial a ser usado dentro do Accumular_func.
Valor de retorno
Este operador retornará um observável que terá novos valores com base na função acumuladora aplicada a cada valor do observável de origem.
Exemplo
from rx import of, interval, operators as op
test = of(1, 2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
op.scan(lambda acc, a: acc + a, 0))
sub1.subscribe(lambda x: print("The element is {0}".format(x)))
Resultado
E:\pyrx>python testrx.py
The element is 1
The element is 3
The element is 6
The element is 10
The element is 15
The element is 21
The element is 28
The element is 36
The element is 45
The element is 55