Regreso de lambdas o Kotlin: 'return' no está permitido aquí

Estoy intentando escribir una function que me dirá que la string es bonita, bonita significa que la string tiene al less una repetición de letras en la string. Pero no puedo hacer el retorno de lambda, siempre devuelve falso, aunque se pasa la condición en if. ¿Puede alguien explicarme cómo hacer para volver?

Intenté escribir el retorno, pero IDEA me dio el post de Kotlin: "retorno" no está permitido aquí

fun main(args: Array<String>) { println("sddfsdf".isNice()) } fun String.isNice(): Boolean { val hasRepeat = { for (i in 0 .. (length - 2)) { if (subSequence(i, i + 2).toSet().size == 1) { true println(subSequence(i, i + 2)) } } false } return hasRepeat() } 

La salida es:

 dd false 

Puede labelr lambda y luego usar return labeldo:

 fun String.isNice(): Boolean { val hasRepeat = hasRepeat@ { for (i in 0 .. (length - 2)) { if (subSequence(i, i + 2).toSet().size == 1) { return@hasRepeat true println(subSequence(i, i + 2)) // <-- note that this line is unreachable } } false } return hasRepeat() } 

o puede usar la function local con nombre, si no necesita hasRepeat para ser una reference de function:

 fun String.isNice(): Boolean { fun hasRepeat(): Boolean { for (i in 0 .. (length - 2)) { if (subSequence(i, i + 2).toSet().size == 1) { return true } } return false } return hasRepeat() } 

No puede hacer un retorno no local dentro de un lambda pero puede cambiar su lambda a una function anónima:

 fun String.isNice(): Boolean { val hasRepeat = fun(): Boolean { for (i in 0..(length - 2)) { if (subSequence(i, i + 2).toSet().size == 1) { return true } } return false } return hasRepeat() } 
  • Readaptar el código de respuesta 405 con el post "método no permitido aquí"
  • Buscador privado y establecedor público para una propiedad de Kotlin
  • ¿Cómo cancelar la suscripción a events en TornadoFX?
  • Kotlin: ¿cómo pasar una function de object como parámetro a otra?
  • ¿Cómo get una class de param genérica en Kotlin?
  • ¿Qué path es mejor si espero usar una syntax como function estática en Kotlin?
  • Android - Kotlin: el object debe declararse abstracto o implementar miembro abstracto
  • Android Studio / Kotlin: Error de Gradle: no se puede encontrar el método compile () para los arguments
  • Solo las dependencies se copyn cuando se implementan plugins intellij
  • Cómo crear el flask gordo con gradle kotlin script
  • Kotlin / Java - Datos de la database de testing proporcionados REST API