gpt4 book ai didi

scala - 使用 Scala Actor 和 receiveWithin 的 Stackoverflow 异常

转载 作者:行者123 更新时间:2023-12-01 09:36:50 25 4
gpt4 key购买 nike

一段时间后,这个 Actor 填满了堆栈。可能的解决方案?

object Puller extends Actor {

def act() = {
receiveWithin(2000) {
case Stop => println("stoping puller")
exit()
case Noop => println("nothing happens")
act()
case TIMEOUT => doPull
act()
}
}

def doPull() = // stuff...
}

我很不高兴在 Scala 编程中找到这段代码。

最佳答案

你的 act 不是尾递归的。你可以修改如下:

  @tailrec // in the presence of this annotation, the compiler will complain, if the code is not tail-recursive
def act() = {
receiveWithin(2000) {
case Stop => println("stoping puller"); exit()
case Noop => println("nothing happens")
case TIMEOUT => doPull
}
act()
}

关于scala - 使用 Scala Actor 和 receiveWithin 的 Stackoverflow 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com