RxPY - Operatori di trasformazione
buffer
Questo operatore raccoglierà tutti i valori dalla sorgente osservabile e li emetterà ad intervalli regolari una volta soddisfatta la data condizione al contorno.
Sintassi
buffer(boundaries)
Parametri
confini: è osservabile l'input che deciderà quando fermarsi in modo che vengano emessi i valori raccolti.
Valore di ritorno
Il valore di ritorno è osservabile, che avrà tutti i valori raccolti dalla fonte osservabile basata e cioè la durata del tempo è decisa dall'input osservabile preso.
Esempio
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)))
Produzione
E:\pyrx>python test1.py
The elements are [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ground_by
Questo operatore raggrupperà i valori provenienti dalla sorgente osservabile in base alla funzione key_mapper data.
Sintassi
group_by(key_mapper)
Parametri
key_mapper: questa funzione si occuperà di estrarre le chiavi dalla sorgente osservabile.
Valore di ritorno
Restituisce un osservabile con valori raggruppati in base alla funzione key_mapper.
Esempio
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)))
Produzione
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>
carta geografica
Questo operatore cambierà ogni valore dalla sorgente osservabile in un nuovo valore basato sull'output di mapper_func fornito.
Sintassi
map(mapper_func:None)
Parametri
mapper_func: (opzionale) cambierà i valori dalla sorgente osservabile in base all'output proveniente da questa funzione.
Esempio
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)))
Produzione
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
scansione
Questo operatore applicherà una funzione accumulatore ai valori provenienti dalla sorgente osservabile e restituirà un osservabile con nuovi valori.
Sintassi
scan(accumulator_func, seed=NotSet)
Parametri
accumulator_func: questa funzione viene applicata a tutti i valori dalla sorgente osservabile.
seed: (opzionale) il valore iniziale da utilizzare all'interno di accumular_func.
Valore di ritorno
Questo operatore restituirà un osservabile che avrà nuovi valori basati sulla funzione accumulatore applicata a ciascun valore della sorgente osservabile.
Esempio
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)))
Produzione
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