2017-12-22 106 views
5

Bir yinelemenin gerektiği bir Coroutine'i nasıl geçeceğimi anlamıyorum.Kotlin: Bir sıralamanın (coroutine) yinelenen olarak nasıl geçirileceği <T>

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

Ben işe yaraması için ?? yerine koymak gerekiyor Ne:

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

istediğim bir eşyordam geçmek:

Ben aşağıdaki işlevi olduğunu varsayalım? buildIterator ve buildSequence'u denedim, ancak bunlardan biri çalışmadı.

+1

Döküm 'buildSequence {...} asIterable()' yeterli olmalı. – yegodm

cevap

6

Sen asIterable() kullanabilirsiniz.

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

iterate(seq) 
+0

Teşekkürler. Her ne kadar standart lib'de "buildIterable" bulunmadığını anlamam da .. Ben onu 'buildSequence' (builderAction) .asInte() işlevine ekledim –

İlgili konular