首页 > 解决方案 > 了解 Akka FSM `onTransition`

问题描述

我试图在 Java 中实现 Akka FSM,因此在此过程中试图理解一些用 Scala 编写的示例。我还查看了文档

我不太明白_下面这种情况的目的。

onTransition {
    case Uninitialized -> _ => unstashAll()
}

它是指过渡中的“任何”状态吗?

标签: scalaakka

解决方案


thingie->FSM 伴随对象中定义的提取器对象。它可以定义如下:

object -> {
   def unapply[A, B](x: (A, B)): Option[(A, B)] = Some(x)
}

它只会匹配成对的对象。如果其中一个子模式是下划线,那么它只是匹配每个可能的对象。例如,使用上述定义:

List((1, 2), (1, 3), (2, 3)).collect{ case x @ (1 -> _) => x }

返回

List[(Int, Int)] = List((1,2), (1,3))

(所有状态从1任何东西转换),而

List((1, 2), (1, 3), (2, 3)).collect{ case x @ (_ -> 3) => x }

返回

List[(Int, Int)] = List((1,3), (2,3))

(所有状态从任何转换到3)。FSM 状态也是如此。


推荐阅读