Interoperabilidad de Kotlin-JS: uso de construcciones de lenguaje

Tengo una function js interoperabilidad que utiliza el for in constructo para iterar sobre los elementos de input, pero está arrojando un error en el time de ejecución.

 native("document") val ndoc: dynamic = noImpl fun jsInterOp() { js("console.log('JS inling from kotlin')") val ies = ndoc.getElementsByTagName("input") for (e in ies) { console.log("Input element ID: ${e.id}") } } 

Obteniendo el siguiente error js

 Uncaught TypeError: r.iterator is not a functionKotlin.defineRootPackage.kotlin.Kotlin.definePackage.js.Kotlin.definePackage.iterator_s8jyvl$ @ kotlin.js:2538 

¿Alguna sugerencia sobre cómo solucionar este problema?

Kotlin: M12

El código js generado para la function es,

  jsInterOp: function () { var tmp$0; console.log('JS inling from kotlin'); var ies = document.getElementsByTagName('input'); tmp$0 = Kotlin.modules['stdlib'].kotlin.js.iterator_s8jyvl$(ies); while (tmp$0.hasNext()) { var e = tmp$0.next(); console.log('Input element ID: ' + e.id); } }, 

forEach no funcionó porque es una function de Array en JS, pero getElementsByTagName devuelve HTMLCollection . Así que cambié el código de kotlin para usar el ciclo for que itera sobre esta colección y funciona como se esperaba.

  val ies = ndoc.getElementsByTagName("input") for (i in 0..(ies.length as Int) - 1) { console.log("InputElement-${i} : ${ies[i].id}") } 

Kotlin for-loop usa mucha magia interna. forEach() es más sencillo en JS. Prueba esto:

 ies.iterator().forEach { ... } 

Parece ser un error en Kotlin M12, porque no pude hacer un bucle for aunque fuera en una list simple.

 for(i in listOf(1, 2)); // TranslationInternalException 

también

No estoy seguro de cuál es el document que utiliza aquí, pero es posible que le guste la API estándar:

 import kotlin.browser.document val ies = document.getElementsByTagName("input") 
  • Artículos duplicates en Set
  • Kotlin: cómo crear una matriz 2D del tipo String
  • Kotlin: ¿Para qué se llaman los arguments lambda?
  • Cómo recordar el estado con los operadores de rebashs en RxJava2
  • Kotlin: ¿Qué es un file kjsm?
  • Kotlin y javax.validation.constraints.NotNull
  • ¿Cómo correctamente serializar tal JSON por medio de GSON Android?
  • Firebase Firestre ¿cómo enumerar los documentos autorizados?
  • ¿Problemas para acceder al object compañero de Kotlin en Groovy?
  • Usando RxJava para get un resultado distinto con Realm y Retrofit
  • Error de la database de Kotlin CursorIndexOutOfBoundsException