2016-07-18 8 views
0

주문한 반복기가 여러 개 있다고 가정합니다. 이 반복자를 병합하고 싶으면 (예 : [(1,3,4), (2,4,5)] -> [1,2,3,4,4,5]) monix을 사용하면 어떻게 할 수 있습니까?Monix에서 여러 개의 관찰 된 관찰 가능 항목을 전체적으로 주문하는 방법

+0

내가 Monix 모른다; 이 표준 스칼라 반복자입니까? –

+0

@TheArchetypalPaul : 예, 표준 스칼라 반복기입니다. – BasilTomato

+0

오른쪽. 답변 올. –

답변

1

이 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) 
+0

감사합니다. Monix (또는 해당 반응 프로그래밍 라이브러리 중 하나)를 사용하여 어떻게 수행 할 수 있는지 알고 싶었지만 여전히 유용합니다. – BasilTomato

+0

잘 했어. 'ord'가 사용되지 않았기 때문에 당신은'merge [A : Ordering]'을 선언 할 수 없었습니까? – jwvh

+0

Monix를 조사 할 시간이 없지만 반복자를 병합하는 방법과 연결되는 방법을 잘 모르겠습니다. 당신의 질문에 아마도 확장 할 수 있습니까? –