Using monix Observable [Node]를 구축하고 너비가 큰 첫 번째 알고리즘을 사용하여 그래프를 탐색하려고합니다. 그러나 거기에 약간의 재귀 문제가 있습니다. 다음은 내 문제를 보여주는 스 니펫입니다.monix의 관찰 가능한 재귀를 처리하는 방법?
package gp
import monix.eval.Task
import monix.execution.Scheduler.Implicits.global
import monix.reactive._
object HelloObservable {
type Node = Int
//real case fetch next node across the network so the signature
//has to be Node -> List[Task[Node]]
def nexts(i : Node) : List[Task[Node]] =
List(Task(i), Task(i+1))
def go(i :Node) : Task[Iterator[List[Node]]] =
Task.sequence(nexts(i).sliding(100,100).map(Task.gatherUnordered))
def explore(r: Node): Observable[Node] = {
val firsts = for {
ilr <- Observable.fromTask(go(r))
lr <- Observable.fromIterator(ilr)
r <- Observable.fromIterable(lr)
} yield r
firsts ++ firsts.flatMap(explore)
}
def main(args : Array[String]) : Unit = {
val obs = explore(0)
val cancelable = obs
.dump("O")
.subscribe()
scala.io.StdIn.readLine()
}
}
첫 번째 반복 이후 관찰 가능한 중지. 아무도 나에게 왜 암시 할 수 있니?
정말 고마워요! 내가 좀 바보 같아 XD 하지만 내 문제는 내가 물었던 질문과 관련이 없기 때문에 적절한 StackOverflow 에티켓은 무엇인가? 내 질문을 삭제해야합니까? – lorilan
@lorilan, 공식 SO 에티켓과 같은 것이 있는지 없는지는 잘 모르겠다. 아마도이 주제에 가장 가까운 것은 아마도 [this] (https://stackoverflow.com/help/privileges/moderator-tools) 일 것이다.). 이 질문을 삭제하면 나에게 명성이 떨어지게 될 것이기 때문에 나는 그것에 반대 할만한 이기적인 동기가있다. 그래도 나는이 질문을 삭제하는 것이 좋은 생각이라고 생각하지 않는다. 이럴 (IMHO) 당신은 좋은 대답 (예 : 순수한 정보 소음)이없는 회복 할 수없는 나쁜 질문 만 삭제해야합니다. 그러나 향후 검색 가능성을 개선 할 수있는 방법에 대해 생각할 수 있다면 게시를 수정할 수 있습니다. – SergGr