我正在做一个家庭作业,修改我的教授创建的代码。不幸的是,他目前对我不可用,所以我正在与 stackoverflow 人群联系。
此片段来自文件“Peer.scala”,该文件与来自另一个类“RemoteActorChat.scala”的演员进行通信。为了简洁起见,我只包含了我认为是问题原因的片段。如果其余代码对找到解决方案有用,我会很乐意发布它。
我的意图是让 Peer 在连续循环中从控制台捕获输入,同时对从 RemoteChatActor 接收到的任何消息做出反应。
...
def act {
...
loop {
val textInput = Console.readLine(name + ">").toString()
textInput match {
case "Unsubscribe" =>
unsubscribe
case "Subscribe" =>
subscribe(name))
case "?" =>
println("Type any message to send it to the chatroom")
println("Type 'Unsubscribe' (without quotes) to leave the chatroom")
println("Type 'Subscribe' (without quotes) to re-join the chatroom")
case _ =>
post(textInput)
}
react {
case Post(msg) =>
println(name + " got a post = " + msg)
}
}
}
...
当 inputText 与 _ 匹配时,调用 post 函数,是不是这样,我得到另一个提示。如果我愿意,我可以像这样整天发布消息。
但是,当 inputText 与“Unsubscribe”、“Subscribe”或“?”匹配时,行为是不同的。案例中的语句被执行 IE)取消订阅或订阅函数被调用并按预期做他们的事情。但是,我没有收到继续从控制台发送输入的提示。对等点基本上只是在这一点上挂起。我期待另一个提示,但控制台窗口只是空的,不接受任何额外的输入。
显然,我对这应该如何工作的理解是有缺陷的。
我有什么误解,我怎样才能做到我想要的?