Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 理解Akka FSM'onTransition`_Scala_Akka - Fatal编程技术网

Scala 理解Akka FSM'onTransition`

Scala 理解Akka FSM'onTransition`,scala,akka,Scala,Akka,我试图用Java实现Akka FSM,因此在这个过程中,我试图理解一些用Scala编写的示例。我也看过 我不太明白下面这个例子的目的 onTransition { case Uninitialized -> _ => unstashAll() } 它指的是转换中的任何状态吗?最后在中找到了答案 在Java中,这可以写成: onTransition { matchState(UNINITIALIZED, null, () -> unstashAll()) }

我试图用Java实现Akka FSM,因此在这个过程中,我试图理解一些用Scala编写的示例。我也看过

我不太明白下面这个例子的目的

onTransition {
    case Uninitialized -> _ => unstashAll()
}
它指的是转换中的任何状态吗?

最后在中找到了答案

在Java中,这可以写成:

onTransition {
    matchState(UNINITIALIZED, null, () -> unstashAll())
}
->thingie是中定义的提取器对象。它可以定义如下:

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))
List[(Int, Int)] = List((1,3), (2,3))
所有状态都从1转换为任何状态,而

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

List[(Int, Int)] = List((1,2), (1,3))
List[(Int, Int)] = List((1,3), (2,3))
所有状态从任意状态转换为3。FSM州也是如此