RxPY - 条件和布尔运算符

all

此运算符将检查源可观察对象中的所有值是否都满足给定的条件。

语法

all(predicate)

参数

predicate:布尔值。 此函数将应用于来自源可观察对象的所有值,并将根据给定的条件返回 true 或 false。

返回值

返回值是一个 observable,它将具有布尔值 true 或 false,基于应用于源 observable 的所有值的条件。

示例 1

from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
sub1 = test.pipe(
   op.all(lambda a: a<10)
)
sub1.subscribe(lambda x: print("The result is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The result is False

示例 2

from rx import of, operators as op
test = of(1, 2, 3, 4, 5, 6, 7, 8, 9)
sub1 = test.pipe(
   op.all(lambda a: a<10)
)
sub1.subscribe(lambda x: print("The result is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The result is True

contains

如果给定值存在是源可观察值的值,则此运算符将返回值为 true 或 false 的可观察值。

语法

contains(value, comparer=None)

参数

value: 要检查的值(如果存在于源可观察对象中)

comparer: 可选。 这是一个比较器函数,将应用于源可观察对象中存在的值以进行比较。

示例

from rx import of, operators as op
test = of(17, 25, 34, 56, 78)
sub1 = test.pipe(
   op.contains(34)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is True

示例 2:使用比较器

from rx import of, operators as op
test = of(17, 25, 34, 56, 78)
sub1 = test.pipe(
   op.contains(34, lambda x, y: x == y)
)
sub1.subscribe(lambda x: print("The valus is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is True

default_if_empty

如果源 observable 为空,此运算符将返回默认值。

语法

default_if_empty(default_value=None)

参数

default_value: 可选。 它会给出输出,因为 None 是没有任何东西作为 default_value 传递,否则它会给出传递的任何值。

返回值

如果源 observable 为空,它将返回一个具有默认值的 observable。

示例 1

from rx import of, operators as op
test = of()
sub1 = test.pipe(
   op.default_if_empty()
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is None

示例 2: default_value passed

from rx import of, operators as op
test = of()
sub1 = test.pipe(
   op.default_if_empty("Empty!")
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is Empty!

sequence_equal

此运算符将比较两个 observable 序列或一个值数组,并返回值为 true 或 false 的 observable。

语法

sequence_equal(second_seq, comparer=None)

参数

second_seq: 要与第一个可观察对象进行比较的可观察对象或数组。

comparer: 可选。 用于比较两个序列中的值的比较器函数。

示例

from rx import of, operators as op
test = of(1,2,3)
test1 = of(1,2,3)
sub1 = test.pipe(
   op.sequence_equal(test1)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is True

示例:使用比较器函数

from rx import of, operators as op
test = of(1,2,3)
test1 = of(1,2,3)
sub1 = test.pipe(
   op.sequence_equal(test1, lambda x, y : x == y)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is True

skip_until

此运算符将丢弃来自源可观察对象的值,直到第二个可观察对象发出值。

语法

skip_until(observable)

参数

observable: 第二个可观察对象在发出值时将触发源可观察对象。

返回值

它将返回一个 observable,该 observable 将具有来自源 observable 的值,直到第二个 observable 发出一个值。

示例

from rx import interval,range, operators as op
from datetime import date
test = interval(0)
test1 = range(10)
sub1 = test1.pipe(
   op.skip_until(test)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is 0
The value is 1
The value is 2
The value is 3
The value is 4
The value is 5
The value is 6
The value is 7
The value is 8
The value is 9

skip_while

此运算符将返回一个可观察值,其值来自满足传递条件的源可观察值。

语法

skip_while(predicate_func)

参数

predicate_func: 此函数将应用于源可观察对象的所有值,并返回满足条件的值。

返回值

它将返回一个具有满足所传递条件的源可观察值的可观察值。

示例

from rx import of, operators as op
from datetime import date
test = of(1,2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
   op.skip_while(lambda x : x < 5)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is 5
The value is 6
The value is 7
The value is 8
The value is 9
The value is 10

take_until

此运算符将在第二个可观察对象发出值或终止后丢弃来自源可观察对象的值。

语法

take_until(observable)

参数

observable: 第二个可观察对象,当它发出一个值时将终止源可观察对象。

返回值

当使用的第二个 observable 发出值时,它将返回一个 observable,该 observable 将仅具有来自源 observable 的值。

示例

from rx import timer,range, operators as op
from datetime import date
test = timer(0.01)
test1 = range(500)
sub1 = test1.pipe(
   op.take_until(test)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

在此示例中,您将获得范围发出的值。 但是,一旦计时器完成,它将停止可观察到的源进一步发射。

输出

E:\pyrx>python testrx.py
The value is 0
The value is 1
The value is 2
The value is 3
The value is 4
The value is 5
The value is 6
The value is 7
The value is 8
The value is 9
The value is 10
The value is 11
The value is 12
The value is 13
The value is 14
The value is 15
The value is 16
The value is 17
The value is 18
The value is 19
The value is 20
The value is 21
The value is 22
The value is 23
The value is 24
The value is 25
The value is 26

take_while

当条件失败时,此运算符将丢弃源可观察值中的值。

语法

take_while(predicate_func)

参数

predicate_func: 此函数将评估源可观察对象的每个值。

返回值

它将返回一个具有值的可观察对象,直到谓词函数满足为止。

示例

from rx import of, operators as op
from datetime import date
test = of(1,2,3,4,5,6,7,8,9,10)
sub1 = test.pipe(
   op.take_while(lambda a : a < 5)
)
sub1.subscribe(lambda x: print("The value is {0}".format(x)))

输出

E:\pyrx>python testrx.py
The value is 1
The value is 2
The value is 3
The value is 4