Operation之条件和布尔操作符

amb

  • 当传入多个Observable到amb操作符时, 他将取第一个发生元素或产生事件的Observable, 然后只发出他的元素. 并且忽略其他的Observable
let subject191 = PublishSubject<Int>()
let subject192 = PublishSubject<Int>()
let subject193 = PublishSubject<Int>()

subject191
    .amb(subject192)
    .amb(subject193)
    .subscribe(onNext: { print($0) })
    .disposed(by: bag)

subject192.onNext(0)
subject191.onNext(50)
subject192.onNext(1)
subject193.onNext(101)
subject193.onNext(102)
subject191.onNext(51)
subject192.onNext(2)
subject193.onNext(103)

takeWhile

  • 该方法依次判断Observable序列的每一个值是否满足给定的条件. 当地一个不满足条件的值出现时, 他便自动完成
Observable.of(1,2,3,4,6,1,3,8,3,5,9)
    .takeWhile {
        $0 < 7
}
.subscribe(onNext: { print($0) })
.disposed(by: bag)

takeUntil

  • 除了订阅Observable外, 通过takeUntil方法我们还可以监视另外一个Observable, 即notifier
  • 如果notifier发出值或complete通知, 那么源Observable便自动完成, 停止发送事件
let source21 = PublishSubject<String>()
let notifier21 = PublishSubject<String>()
source21.takeUntil(notifier21)
    .subscribe(onNext: { print($0) })
    .disposed(by: bag)

source21.onNext("a")
source21.onNext("b")
source21.onNext("c")

notifier21.onNext("A")

source21.onNext("d")
source21.onNext("e")
source21.onNext("f")

skipWhile

  • 该方法用于跳过前面所有满足条件的事件
  • 一旦遇到不满足的条件的事件, 之后就不会再跳过了
Observable.of(1,2,3,4,5,6,7)
    .skipWhile{ $0 < 4 }
    .subscribe(onNext: { print($0) })
    .disposed(by: bag)

skipUntil

  • 同上面的takeUntil一样, skipUntil除了订阅源Observable外, 通过skipUntil方法我们还可以监视另外一个Observable, 即notifier
  • 与takeUntil相反的是. 源Observable序列事件默认会一直跳过, 知道notifier发出值或complete通知
let source32 = PublishSubject<Int>()
let notifier32 = PublishSubject<Int>()
source32.skipUntil(notifier32)
    .subscribe(onNext: { print($0) })
    .disposed(by: bag)

source32.onNext(1)
source32.onNext(2)
source32.onNext(3)

notifier32.onNext(11)

source32.onNext(4)
source32.onNext(5)

notifier32.onNext(12)

source32.onNext(6)
source32.onNext(7)

原文地址:https://www.cnblogs.com/gchlcc/p/11847862.html

时间: 2024-09-30 19:53:02

Operation之条件和布尔操作符的相关文章

RxJava操作符——条件和布尔操作符(Conditional and Boolean Operators)

RxJava系列教程: 1. RxJava使用介绍 [视频教程] 2. RxJava操作符 ? Creating Observables(Observable的创建操作符) [视频教程] ? Transforming Observables(Observable的转换操作符) [视频教程] ? Filtering Observables(Observable的过滤操作符) [视频教程] ? Combining Observables(Observable的组合操作符) [视频教程] ? Erro

js中等性操作符(==)、关系操作符(&lt;,&gt;)和布尔操作符(!)比较规则

最近一直在笔试面试,经常碰到例如 123=='123'.'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致.现查阅资料后对此进行一些总结. 等性操作符(==) 1.比较的类型是String.Number.Boolean这几个基本类型时 当是这几中类型进行比较时,会先将两边转换成数字,在进行比较. 1 console.log(1 == true); // true转换成数字为1,因此结果为true 2 3 con

js布尔操作符小记

为了提高学习效率断了下网,没想到这么渣渣网断了之后就连不上了=.=废话少说,开始正题. 重新看红皮书,重点记一下布尔操作符.布尔操作符有 !,&&,||.  一,逻辑非 先说说 !, 非是布尔操作符中唯一一个会把所有数据类型转换为布尔类型的.拿几个特殊值为例: 如果操作数为 null,则 !null返回 true 如果操作数为 undefined,则 !undefined 返回true 如果操作数为 NaN,则 !NaN 返回true 有了 逻辑非,就可以用两个!!来判断一个数据类型的布尔

Javascript 布尔操作符总结

在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了.在像javascript这样弱类型语言更有其妙用,让我们的代码,简捷可靠.布尔操作符一共有3个: 与.或.非. 特性: 非 先来讨论一下,最简单的‘非!’ 相对与和或来说,非更简单一点,先把操作数转换为布尔值,再取反,值不是true,就是false. 结论:逻辑非的返回值最后只有两个:true or false.       与和或: 而与和或并不总是返

JS基本概念 -- 操作符 -- 布尔操作符

布尔操作符一共有三个: 非(Not).与(AND).或(OR) 逻辑非逻辑非操作符由一个叹号(!)表示,可以应用于ECMAScript中的任何值.无论这个值是什么类型,这个操作符都会返回一个布尔值.逻辑非操作符首先将他的操作数转换为一个布尔值,再对其求反. //1.如果操作数是一个对象,返回false var o = { name: "ss" }; alert(!o); //false var o1 = {}; alert(!o1); //false //2.如果操作数是一个空字符串,

布尔操作符解析

在一门编程语言中,布尔操作符的重要性堪比相等操作符.如果没有测试两个值关系的能力,那么诸如if...else和循环之类的语句就不会有用武之地了. 布尔操作符一共有3个: 非.与.或 1.逻辑 非 逻辑非用!表示,可以应用与ECMAScript的任何类型的值,逻辑非操作返回的是一个布尔值(true/false).该操作符首先会将它的操作数转换为一个布尔值,然后再对其求反. 下面说明下Boolean()转型函数的一组规则. 数据类型 转换为true的值 转换为false的值 Boolean true

python运算学习之Numpy ------ 数组的切片索引与循环遍历、条件和布尔数组、

数组的切片索引: 数组的切片索引和列表非常类似,下面用代码简单说明 1 a = np.random.rand(16).reshape(4, 4) 2 print("数组a:\n", a) 3 print(a[-1][1:4]) 4 Out[1]: 5 数组a: 6 [[0.04175379 0.43013992 0.5398909 0.40638248] 7 [0.3305902 0.11958799 0.48680358 0.30755734] 8 [0.00893887 0.384

布尔操作符

and . or .not  三个布尔操作符号用于比较布尔值 1.二元布尔操作符 如果两个布尔值都为True, and操作符就将表达式求值为True,否则求值为False:如下: >>> True and True True >>> True and False False >>> 以下为and的操作符的比较: 表达式 求值 True and True True True and False False False and True False Fal

布尔操作符-逻辑与(&amp;&amp;)

逻辑与(&&) 逻辑与操作符由两个和号(&&)表示,有两个操作数. 第一个操作数 第二个操作数 结果 true true true true false false false true false false false false 逻辑与操作可以应用与任何类型的操作数,而不仅仅是布尔值.在有一个操作数不是布尔值的情况下 ,逻辑与操作就不一定返回布尔值,此时,它遵循下列规则: •如果第一个操作数是对象,则返回第二个操作数: •如果第二个操作数是对象,则只有在第一个操作数的