Se esperaba Int, se obtuvo IntProgression en su lugar

Intento conectarme con Kotlin, así que sigo este tutorial .

Entonces están tratando de crear una secuencia dada una cadena, como esta:

"a vect" -> [ a vect : a vec : t a ve : ct ... ] 

Y la forma de hacerlo es, según el video, lo siguiente:

 val seq = sequenceOf(canonicalisedInput.lastIndex + 1 downTo 0).map { canonicalisedInput.substring(0, it) to canonicalisedInput.substring(it) } 

Y obtengo lo que hago (bueno, la idea de eso). El problema es que la substring espera dos Int , mientras it (que supongo que es un iterador implícito de algunos géneros que proviene de la progresión downTo ) es una IntProgression . Lo mismo para la segunda llamada de substring .

¿Qué me estoy perdiendo?

El código que ha publicado contiene un error: sequenceOf(...) con un único argumento pasado devuelve una secuencia con ese elemento, es decir, Sequence<IntProgression> . Para get una secuencia de índices ( Sequence<Int> ), use en asSequence() lugar la function asSequence() :

  (canonicalisedInput.lastIndex + 1 downTo 0).asSequence().map { ... } 

La function de substring(...) llamada segunda es la sobrecarga que devuelve la subcadena a partir del índice pasado como argumento .

Y es el nombre implícito para el parámetro más interno de lambda , en su caso es el parámetro del map , es decir, el elemento de secuencia que se asignará por la lambda.

Entonces, la expresión dentro de lambda es un par (creado por la function infijo ) de dos subcadenas, una desde el comienzo de la cadena original hasta el índice en la secuencia, la otra, desde ese índice hasta el final de la cadena.

Entonces el código definitivamente debería funcionar con la secuencia de índices, por eso el error es bastante claro.

sequenceOf(canonicalisedInput.lastIndex + 1 downTo 0) – esta expresión crea una secuencia que consta de un único elemento de IntProgression .

Si desea convertir un IntProgression a una Sequence<Int> , use la function de extensión de asSequence :

 (canonicalisedInput.length downTo 0).asSequence() 
  • Asegurar que se inicializa un valor en Kotlin
  • Kotlin plotble y arrayList de plotbles
  • ¿Hay alguna manera de tener un file privado constante en Kotlin?
  • ¿Es posible mover mis files Kotlin en un package separado (tipo de fuente) en Android Studio?
  • 'kapt.generateStubs' no es usado por el complemento 'kotlin-kapt'
  • No se puede acceder a la variable desde la class interna: Android Kotlin
  • ¿Por qué no puedo decir: val list = properties.map ((key, valor) -> "$ key = $ value")
  • Kotlin: ¿Cómo puedo invocar un campo lambda que tiene un tipo genérico de su class?
  • ¿Cómo usar Kotlin para escribir una function Y-combinator?
  • RxKotlin flattenAsObservable (): no coincide con el método de reference
  • Variable diferida con reinicio