以下代码返回Future。
val findUserFuture: Future[Option[User]] = userRepo.findOne(userKeys)
Run Code Online (Sandbox Code Playgroud)
然后我处理 Future
findUserFuture.flatMap {....}
.recover{...}
Run Code Online (Sandbox Code Playgroud)
我想recover如果flatMap抛出一个将被调用Exception。但是,如果findOne回报null呢?有没有一种Scala特定的方式来检查findUserFuture是不是null?我可以吗,if(findUserFuture != null)但我想知道是否Scala提供了一些不同的方法来检查nulls
Future和和Future本身的结果之间null以及和之间存在差异None。
null是Java中的遗留物,通常在Scala中不使用。Future本身可能的唯一方法null是findOne返回null,这是极不可能的。因此,测试Future本身不会有用。
未来的结果是Option[User],内的代码flatMap将被赋予Some(user)或的值None。您可以使用标准Option方法来测试该值。通常,您将match根据值或调用map来处理内容(如果存在)。有许多stackoverflow答案说明了如何Option安全地取消取值。
请注意,该Option[User]值可以是,null但是再次出现的可能性很小,并且是库中的错误。
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |