【发布时间】:2015-07-20 04:16:21
【问题描述】:
我有以下功能:
def getWayDepthFirst(maze: Maze, position: Position, way: List[Position]): List[List[Position]] = {
if (!canWalkOnCell(maze, position)) {
Nil
} else {
if (isExit(position, maze)) {
List(position :: way)
} else {
val explorationArea: List[Position] = List(position.north, position.east, position.south, position.west) filter (x => !way.contains(x) && canWalkOnCell(maze, x))
if (explorationArea.size > 1) {
val possibleWays: Future[List[List[List[Position]]]] = Future.traverse(explorationArea)(notYetVisitedPosition => Future(getWayDepthFirst(maze, notYetVisitedPosition, position :: way)))
// possibleWays.onSucces()
} else {
explorationArea.flatMap {
(
notYetVisitedPosition =>
getWayDepthFirst(maze, notYetVisitedPosition, position :: way))
}
}
}
}
它应该能找到穿过迷宫的所有方法。如果有两种或多种可能的搜索方式,那么以后应该处理其中的每一种。
现在我的问题是如何返回这个结果。使用 Future.traverse,我最终得到了 Future[List[List[List[Position]]]],但我需要的是 List[List[Position]]。
返回正确值的可能性是什么?我在哪里做这个?在 onSuccess 中?
【问题讨论】: