gpt4 book ai didi

scala - State-Monad 的递归

转载 作者:行者123 更新时间:2023-12-03 04:19:00 25 4
gpt4 key购买 nike

我正在使用 cats 库中的 State-Monad 来处理我在 Scala 中实现的纸牌游戏的状态。

我有一个函数simulateGame,一旦当前状态为Over,它就应该结束。该函数如下所示。

def simulateGame: GameState[Outcome] = for {
action <- State.inspect[PlayerState, Action] { ... }
status <- step(action)
outcome <- ???
} yield outcome

step 函数返回当前步骤之后的状态。根据返回的状态,我想从状态中提取结果(这没有问题,因为如果状态为 Over,结果就会被编码),或者对 simulateGame< 进行递归调用 函数。

我不确定如何对状态进行模式匹配,然后进行递归调用。

感谢任何帮助!

最佳答案

你可以只匹配和递归

def simulateGame: GameState[Outcome] = for {
action <- State.inspect[PlayerState, Action] { ... }
status <- step(action)
outcome <- status match
case o: Over => State.pure(o)
case _ => simulateGame
} yield outcome

关于scala - State-Monad 的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52273793/

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