RxPY - 变换运算符



buffer

该运算符将收集源可观察对象中的所有值,并在给定的边界条件满足时以常规时间间隔发出这些值。

语法

buffer(boundaries)

参数

boundaries:输入是可观察对象,它将决定何时停止,以便发出收集到的值。

返回值

返回值是可观察对象,它将具有从源可观察对象收集的所有值以及根据所采用的输入可观察对象确定的时间持续时间。

示例

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)))

输出

E:\pyrx>python test1.py
The elements are [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ground_by

该运算符将根据给定的 key_mapper 函数对源可观察对象中传出的值进行分组。

语法

group_by(key_mapper)

参数

key_mapper:此函数将负责从源可观察对象中提取键。

返回值

它返回一个具有根据 key_mapper 函数分组的值的可观察对象。

示例

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)))

输出

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>

map

该运算符将根据给定 mapper_func 的输出,将源可观察对象中的每个值更改为一个新值。

语法

map(mapper_func:None)

参数

mapper_func:(可选)它将根据该函数传出的输出更改源可观察对象中的值。

示例

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)))

输出

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

scan

该运算符将累加器函数应用于源可观察对象中传出的值,并返回一个具有新值的可观察对象。

语法

scan(accumulator_func, seed=NotSet)

参数

accumulator_func:此函数应用于源可观察对象中的所有值。

seed:(可选) accumular_func 中要使用的初始值。

返回值

此运算符将返回一个可观察对象,该可观察对象将具有基于应用于源可观察对象的每个值的累加器函数的新值。

示例

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)))

输出

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
广告
© . All rights reserved.