【问题标题】:Message passing using akka with case使用带有 case 的 akka 传递消息
【发布时间】:2013-12-14 15:28:26
【问题描述】:
class ActorA(processB:ActorRef) extends Actor with ActorLogging{
  def receive = {
    case (0) => 
       println(1000)
    case (_) => 
       println (2*_)
   }
}

如果传递的消息为 0,则我正在编写此代码以输出 1000,否则为 2x,但它告诉我 * 不是扩展函数的 Any 和缺少参数类型的成员


【问题讨论】:

    标签: scala akka actor messages


    【解决方案1】:

    发送给参与者的消息可以是任何类型,因此您的最终模式是针对 Any 类型的值。 如果只想处理 Int ,则需要在模式中指定类型。 此外,您不能与 _ 匹配,然后将 _ 用作变量。他们的意思不同。案例中的第一个意味着您不在乎价值是什么。 第二个是函数参数的占位符。

    你想要的是:

    class ActorA(processB:ActorRef) extends Actor with ActorLogging{
       def receive = {
          case (0) => 
             println(1000)
          case x:Int => 
             println (2*x)
       }
    }
    

    【讨论】:

      【解决方案2】:

      您可以将这种情况添加到接收函数中:

      case (number:Int) => println (2*number)
      

      记住,当你使用下划线_的情况下,你不能使用=>符号后面的变量值。

      【讨论】:

        猜你喜欢
        • 2015-08-05
        • 1970-01-01
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 2011-09-06
        • 2021-06-19
        • 2012-06-04
        • 1970-01-01
        相关资源
        最近更新 更多