Articles of ленивая оценка

Возможно ли лениво инициализировать свойство и утверждать его?

Как я могу ленив инициализировать поле и выполнить утверждение на нем? Я пытался val table: Array<FormatInfo> by lazy { val t = arrayOf(…) assert(table.size == FORMAT_COUNT, { System.err.println("GLI error: format descriptor list doesn't match number of supported formats") }) t } Но он переполняется: java.lang.StackOverflowError at gli.GliKt$table$2.invoke(gli.kt:451) at gli.GliKt$table$2.invoke(gli.kt) at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) at gli.GliKt.getTable(gli.kt) at gli.GliKt$table$2.invoke(gli.kt:693) […]

Kotlin, ориентированный на Java interop: Идиоматический тип для ленивой коллекции?

При настройке Java interop какой тип следует использовать для ленивой коллекции? Sequence<T> имеет наибольший смысл для абонентов Kotlin из-за того, что по умолчанию функции расширения на нем ленивы, но заставляет вызывающих Java обрабатывать тип stdlib Kotlin и преобразовывать итератор последовательности вручную (последовательность не расширяет итерабельность!) Iterable<T> имеет смысл для Java-абонентов из-за неявного использования в циклах, […]