[英]How to represent that an Akka actor is in a long running operation using FSM-s
[英]How to represent this FSM in GADT
我正在觀看此視頻並了解 Scala 中的 GADT。
我能夠代表下面的 state 機器
這是我的代碼
type Idle
type Moving
enum Direction:
case East, West, North, South
import Direction.*
enum Command[From, To]:
case Turn(direction: Direction) extends Command[Idle, Idle]
case Start extends Command[Idle, Moving]
case Stop extends Command[Moving, Idle]
case Chain[A, B, C](command1: Command[A, B], command2: Command[B, C])
extends Command[A, C]
import Command.*
extension [A, B, C](command1: Command[A, B])
infix def ~>(command2: Command[B, C]): Command[A, C] =
Chain(command1, command2)
現在我想改變一個細節。 我想在Idle
和Moving
時賦予Turn
的能力。 在Turn
命令之后,我希望機器保留它所在的任何 state。例如,如果機器正在移動並且需要轉彎,我希望 state 機器保留該信息。
例如Start ~> Turn(West)
應該是Command[Idle,Moving]
& Start ~> Stop ~> Turn(West)
應該是Command[Idle,Idle]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.