我想實現一個方法,創建一個用戶,如果它還不存在。如果確實存在,則應該返回用戶。如何在未來解壓Option?
這裏是我的代碼:
def createUserIfNotExists(user: User) = {
for {
count <- userService.count(Some(user))
user <- if (count == 0) createUser(user) else userService.findOneByName(user.name)
} yield user
}
我的問題是findOneByName
回報Future[Option[User]]
和createUser
回報Future[User]
所以類型不匹配。
如何解開Future[Option[User]]
到Future[User]
或在有None
的情況下拋出異常?
「for」理解沒有任何用處。 – jwvh
@jwvh爲什麼?你能解釋一下嗎? –
SO評論將不會允許我呈現格式化的代碼,但CNTL-複製以下內容並插入空格:'def createUserIfNotExists(user:User)= if(userService.count(Some(user))> 0) userService .findOneByName(user.name) else createUser(user)' – jwvh