0
让我先解释一下我的问题。我是一个存储所有已知ID的存储库。而这个存储库是一个演员,让他叫他repo
。我在此演员中定义了GetId(id: Id)
消息和GetIdReply(Option[Id])
,以便请求特定的ID并在已经存在或不存在的情况下获得回复。我会说很直接。使用scala + akka生成唯一的ID
现在我有另一个负责生成唯一ID的actor。所以,我想实现这个功能,如:
private def getUniqueId(): Id = {
implicit val timeout = Timeout(500.millis)
var id = Id(UUID.randomUUID().toString)
val getIdReply = repo ? GetId(Id)
getIdReply.mapTo[GetIdReply] onSuccess {
case success =>
success.id match {
case Some(matchedId) =>
// Generated ID already exists, let's call this function recursively
id = getUniqueId
case None =>
// Generated ID is OK
}
}
id
}
我试图实现这个作为一个递归和这个事情的作品只有在生成的ID是在第一次尝试独特。第二次和所有其他尝试不起作用。 所以我在这里的问题是如何正确构建这样一个函数,将“循环”,直到ID是真正独特的?
Thx!
最佳