2017-12-22 30 views
5

Iterable이 필요한 곳에 Coroutine을 전달하는 방법을 이해하지 못합니다.Kotlin : 반복문 (coroutine)을 전달하는 방법 <T>

iterate(?? { 
    for (obj in objects) { 
     yield(transform(obj)) 
    } 
}) 

나는 일이의 ?? 대신 넣어 하죠 무엇 :

fun <T> iterate(iterable: Iterable<T>) { 
    for (obj in iterable) { 
     // do something.. 
    } 
} 

내가 원하는이 코 루틴을 통과 :

나는 다음과 같은 기능을 가지고 가정? buildIteratorbuildSequence을 시도했지만 어느 것도 작동하지 않습니다.

+1

캐스팅'buildSequence {...} asIterable는()'충분합니다. – yegodm

답변

6

당신은 asIterable()를 사용할 수 있습니다.

val seq = buildSequence { 
    for (i in 1..5) { 
     yield(i) 
    } 
}.asIterable() 

iterate(seq) 
+0

감사합니다. 내가 왜 표준 lib 디렉토리에'buildIterable'이 없는지 이해할 수는 없지만 그것을 나의 utils에'buildSequence (builderAction) .asIterable()'으로 추가했다. –