Cómo verificar el método en cuando en kotlin

Escribí el código a continuación.

fun check(list){ list.forEach{ when(it){ is Int -> something() is String -> something() //is method -> ??? else -> consume{it} }}} inline fun consume(f: () -> Unit){ f() } 

Pero no quiero verificar el método en else. ¿Hay alguna forma de verificar el método en cuándo?

Por lo que sé, puedes omitir la parte else -> consume{it} . forEach la firma de forEach function es la siguiente :

 inline fun <T> Iterable<T>.forEach(action: (T) -> Unit) 

Ver action . Toma una function con la Unit como salida. Esto significa que no necesita devolver nada (la Unit es el equivalente de void de Java).

Entonces, en conclusión, su código puede verse así:

 fun check(list: List<*>) { list.forEach { when (it) { is Int -> something() is String -> something() //is method -> ??? } } } 

Hice la pregunta, pero combiné el contenido de las respuestas y lo que traté, y adjunté los resultados que estaba tratando de hacer.

 var arr = arrayOf{"String", {method()}} fun check(arr : Array<Any?>?){ arr.forEach{ when(it){ is Int -> println("int") is String -> println("str") else -> @Suppress("UNCHECKED_CAST") (it as () -> Unit)() }}} 

Gracias

  • ¿Plumando Kotlin para la finalización automática del eclipse?
  • Cómo utilizar TextInputLayout y TextInputEditText en Kotlin anko
  • Acceda al campo estático desde la superclass Java
  • Kotlin, Cómo usar la function de recostackción para simplificar este código
  • Kotlin: No se pueden aplicar dos condicionales a la vez. Verificar con el estilo de function de "cuerpo de retorno".
  • Google Guava Invokedynamic requiere --min-sdk-version> = 26
  • kodein: el valor de los datos inyectados no es el valor recuperado de los datos
  • BeanDefinitionParsingException cuando se intenta usar JPA con Kotlin y Spring boot
  • Kotlin with-statement como expresión
  • romper o continuar saltar a través del límite de class kotlin
  • Scala require () equivalente en Kotlin