我突然意识到,用函数式编写真的并不难,所以我决定重构我的一些工作,从我的代码中删除可变集合。loc只是融化了。现在我有一个 Seq 代表一组被监督的演员,每次完成时我都需要从序列中删除它。我想在功能上你会创建一个新的序列并用新的序列做一个 akka 。
def shepherd(categories: Seq[ActorRef]) : Receive = {
case ForumCrawler.Done() => {
val new_categories = categories.filter(a => a != sender)
if(new_categories.size == 0) {
println("all done")
system.shutdown()
}
context.become(shepherd(new_categories))
}
当演员序列在 10k 区域时,这仍然是一种可行的方法吗?scala 是否会以某种方式改变幕后的序列,还是我会得到一套完整的副本?
这有点让我觉得select 回到了过去,只是可能更糟=D