주문한 반복기가 여러 개 있다고 가정합니다. 이 반복자를 병합하고 싶으면 (예 : [(1,3,4), (2,4,5)] -> [1,2,3,4,4,5]
) monix을 사용하면 어떻게 할 수 있습니까?Monix에서 여러 개의 관찰 된 관찰 가능 항목을 전체적으로 주문하는 방법
답변
이 Monix를 사용하지 않습니다, 그러나 그것은 관련이 있는지 잘 모르겠어요
import scala.collection.BufferedIterator
def merge[A:Ordering](xs: Seq[Iterator[A]]) =
new Iterator[A] {
val its = xs.map(_.buffered)
def hasNext = its.exists(_.hasNext)
def next = its.filter{ _.hasNext}
.minBy(_.head)
.next
}
val ys = merge(Seq(List(1,3,5).toIterator, List(2,4,6).toIterator, List(10,11).toIterator))
ys.toList //> res0: List[Int] = List(1, 2, 3, 4, 5, 6, 10, 11)
감사합니다. Monix (또는 해당 반응 프로그래밍 라이브러리 중 하나)를 사용하여 어떻게 수행 할 수 있는지 알고 싶었지만 여전히 유용합니다. – BasilTomato
잘 했어. 'ord'가 사용되지 않았기 때문에 당신은'merge [A : Ordering]'을 선언 할 수 없었습니까? – jwvh
Monix를 조사 할 시간이 없지만 반복자를 병합하는 방법과 연결되는 방법을 잘 모르겠습니다. 당신의 질문에 아마도 확장 할 수 있습니까? –
내가 Monix 모른다; 이 표준 스칼라 반복자입니까? –
@TheArchetypalPaul : 예, 표준 스칼라 반복기입니다. – BasilTomato
오른쪽. 답변 올. –