- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在其他语言的流/函数领域有一个常见的操作,那就是 orElse()。它的作用类似于 if,当当前链没有得到任何结果时,它会更改为备用链。在具有 Maybe 类型的语言中,它基本上会继续 Some 类型的链或更改为 None 类型的 orElse。
理想情况:
Observable.just(false)
.filter(value -> { return value; })
.map(value -> { return 1; })
.orElse(Observable.just(0));
Observable.<Boolean>error(new IllegalStateException("Just playing"))
.filter(value -> { return value; })
.map(value -> { return 1; })
.orElse(Observable.just(0));
目前可以使用 concat 和 takeFirst 重现它,但它在语义上并不相同,并且没有正确处理错误。
Observable.concat(Observable.just(false)
.filter(value -> { return value; })
.map(value -> { return 1; }),
Observable.just(0))
.takeFirst();
最佳答案
看起来他们有,但命名不同:defaultIfEmpty或 switchIfEmpty。
Observable.just(false)
.filter(value -> value)
.map(value -> 1)
.defaultIfEmpty(0)
.subscribe(val -> {
// val == 0
});
Observable.just(false)
.filter(value -> value)
.map(value -> 1)
.switchIfEmpty(Observable.just(0))
.subscribe(val -> {
// val == 0
});
// Error thrown from the first observable
Observable.<Boolean>error(new IllegalStateException("Crash!"))
.filter(value -> value)
.map(value -> 1)
.switchIfEmpty(Observable.<Integer>error(new IllegalStateException("Boom!")))
.subscribe(val -> {
// never reached
}, error -> {
// error.getMessage() == "Crash!"
});
// Error thrown from the second observable
Observable.just(false)
.filter(value -> value)
.map(value -> 1)
.switchIfEmpty(Observable.<Integer>error(new IllegalStateException("Boom!")))
.subscribe(val -> {
// never reached
}, error -> {
// error.getMessage() == "Boom!"
});
关于android - 什么是 RxJava 等同于 orElse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32833705/
是 orElse 的“其他”部分吗?当由于另一个事务写入 TVar 而重试事务时调用它已阅读,或仅当 retry 被显式调用? 最佳答案 如果你有 orElse a b 然后 b仅在 retry 时运
我正在尝试学习Java 8 功能可选。我对Optional.orElse的工作原理感到困惑。这是我尝试过的: public class OptionalsExample { public st
当在 map 步骤之一中得到空列表时,如何调用 orElse? MyObj myObj = new MyObj(); myObj.setAaa("aaa"); myObj.setBbb("bbb");
让我们定义一个 PartialFunction[String, String]和一个 PartialFunction[Any, String] 现在,给定 orElse 的定义 def orElse[
是使用PartialFunction的 orElse或多或少比使用大 match 更有效期间阻止 apply时间? 为了说明这个问题,是: val pf = { case "a" => "A"} or
使用 Either 的惯用方式是什么?在斯卡拉?例如当使用 Option我可以使用 orElse如果当前是 None,则获取下一个可选值的方法.但是如何使用 Either以同样的方式?我没有找到像 o
or 和 OrElse 有什么区别? if temp is dbnull.value or temp = 0 产生错误: Operator '=' is not defined for type 'D
有时我想返回包含在选项中的对象的属性值,但我无法使用 getValue.orElse(otherValue) 轻松做到这一点。 例如,我正在映射内联属性,并且我想使用像 object.get.prop
我很好奇为什么可以这样做(至少在 Java 8 上): Optional.of(null).orElse("something"); Optional.of(null) 基本上是一个有保证的空指针。允
大家好,使用 gzip 的工作人员,我遇到了一个问题。我有一个 GzipWrapper 并且有很多 if else,是否可以使用Optional.orElse 做类似的事情?通过简单的可选示例,我将其
我在使用Optional和匿名类时遇到了一个奇怪的问题: public class Foo { interface Bar { } void doesNotCompile()
是否可以写一个概括的orElse方法来自 Option这需要可变数量的参数?也就是说,而不是: lazy val o1 = { println("foo"); None } lazy val o2 =
我有以下代码打击。我试图找到一种方法来避免 if (something.isPresent())行并声明 Optional something以及。相反,我想链接 Optional.orElse()方
我需要一些关于以下代码片段的帮助。如果raiseWorkQueueTask可以找到任何null != previousPeriod.getOldId()和,则它应该返回通知riseWorkQueue
我正在寻找在 null 情况下提供默认值的良好语法。在涉及 API 的 Java 中,我习惯于使用 Optional 而不是 null,并且想知道 C# 更好的可空类型是否有等效的类型? 可选项 Op
这个问题在这里已经有了答案: Difference between `Optional.orElse()` and `Optional.orElseGet()` (9 个回答) When I nee
我正在尝试在 orElse 中使用 Stream 并且难以理解错误。 collectorConfiguration = Optional.ofNullable(recapPlacement.getAt
我正在使用流过滤器 findAny.orElse,但它没有像我预期的那样工作,所以我想我不了解它的真正工作原理。这是我的代码 return Stream.of(getObjectAttributeVa
在下面的代码中,我试图理解 java-8 中提供的 Optional 的概念。我创建了以下示例来掌握 orElse() 背后的原理。执行代码后,执行了defaultMethod()的主体,并返回 ne
我正在使用此逻辑并尝试在未找到员工时返回 new Employee()。 但是,当 request.getId() 为 null 时,它会抛出异常,我正在等待它执行 orElse() 部分.然而,事实
我是一名优秀的程序员,十分优秀!