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") 
  • Cómo ejecutar la muestra Kotlin / Native win32
  • No se puede burlar de la class final de Kotlin usando Mockito 2
  • Pausa / Reanudar un timer / retraso en RX
  • Objeto de inheritance rápida y significado de la interfaz
  • ¿Es posible utilizar println como reference de function en Kotlin?
  • Android: Kotlin TypeCastException: null no se puede convertir a tipo no nulo kotlin.String
  • ¿Cuál es la manera idiomática de Kotlin de adquirir un Logger?
  • Init método de inheritance
  • Crear una matriz 2D genérica en Kotlin
  • Función genérica con matriz 2D genérica
  • kotlin coroutine y la relación entre el manejador principal