У меня проблемы с синтаксисом для приложения частичной функции. Следующий код работает нормально и выводит: two-three-four
import kotlin.coroutines.experimental.*
inline fun <T> Iterable<T>.forEachFrom(beg:Int, act:(T)->Unit) {
var i=0; if (beg>=0) for (e in this) if (i++ >= beg) act(e)
} // sample function I am testing; please don't change this!
fun main(a:Array<String>) {
val l = listOf("zero", "one", "two", "three", "four")
fun test() = buildSequence { l.forEachFrom(2) { yield(it) } }.joinToString("-")
println(test())
}
Я хотел бы инкапсулировать свой test()
, поэтому он называется: test(l.forEachFrom(2))
Однако я не могу правильно понять типы/синтаксис. Как мне переписать определение функции test()
, чтобы это стало возможным?
act
возвращаетUnit
, как этотyield
мог что-то собрать? - person madhead   schedule 08.11.2017{ yield(it) }
: компилятору нужно место, где вы передаете его, как встроенную функцию. - person hotkey   schedule 08.11.2017