gpt4 book ai didi

scala - Akka 和案例陈述

转载 作者:行者123 更新时间:2023-12-03 14:40:46 24 4
gpt4 key购买 nike

我正在为 Scala 学习 Akka,并且还一直在阅读 Scala 的模式匹配/case 语句。

在Akka中,我可以写一个actor如下:

class MyActor extends Actor {
def receive: Receive = {
case msg: MyMsgClass => sender ! "message received!"
}
}

问题:
  • 这是 Scala 模式匹配的一个例子吗?如果是,为什么没有对应的match关键词?
  • case行,是 msg一个标识符,它是必需的吗?如果我省略它而只使用类名(大概如果我不提供标识符,我不能使用变量本身)会发生什么?
  • 最佳答案

    这是模式匹配的一种情况,结合偏函数。简而言之,偏函数

    {
    case msg: MyMsgClass
    }

    仅当存在类型为 MyMsgClass 的参数时才匹配.它处理可能值的“部分子集”。此语法生成 PartialFunction处理输入为 MyMsgClass 的情况的对象.

    你也可以写:
    {
    case MyMsgClass(value) => sender ! value
    }

    但在这种情况下,你只能得到 value .你甚至可以做一些复杂的事情,比如:
    {
    case m @ MyMsgClass(AnotherClass(_), "this must be this string", a) => sender ! doSomething(m, a)
    }

    它只会很好地匹配 MyMsgClass具有 AnotherClass 类型的第一个参数的对象(无论其参数如何,因此是 _ ),确切的字符串 "this must be this string" ,和一个值 a . m @语法表示对象本身也被使用,而不仅仅是作为一种类型。

    更多信息: http://blog.bruchez.name/2011/10/scala-partial-functions-without-phd.html

    关于scala - Akka 和案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144221/

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