Expresiones Lambda en Kotlin
Considere la siguiente class de Java:
public class SomeClass { public interface Something { void doSomething(); } public void call(Something something) {} }
En Kotlin, puedo usar una expresión lambda de la siguiente manera:
- Emitir no seleccionado al lanzar un object de tipo Cualquiera? en una lambda en kotlin
- Usar interfaces funcionales con types de funciones en Kotlin
- Funciones de Lambda con comodines en Kotlin
- ¿Cómo omitir los parameters lambda en Kotlin?
- cómo descartar DialogFragment de lambda especificado en el llamador Kotlin
SomeClass().call { // do something }
Pero si defino el siguiente método en Kotlin (usando la misma interfaz):
fun call(something: Something) {}
Entonces esta llamada:
call { // do something }
Generaría un error de desajuste de tipo. ¿Por qué?
- Kotlin, tabla / matriz basada en inputs con campos dynamics
- Kotlin: ambigüedad de resolución de sobrecarga lambda y sobrecarga
- ¿Por qué Kotlin no puede inferir el siguiente argumento lambda (después de la conversión de Java -> Kotlin)?
- Cómo sobrecargar constructores en kotlin difiere en el tipo de retorno lambda
- ¿Cómo declaro un parámetro de function para aceptar funciones que arrojan?
- Kotlin: uso ilegal de devolución de parameters en línea
- Poniendo un lambda genérico en un map
- ¿Es posible tener extensiones de function en lambdas?
Kotlin solo admite conversiones SAM para methods Java, porque Kotlin tiene types de funciones. Normalmente, las funciones de Kotlin deberían tomar () -> Unit
lugar de Something
. Si realmente necesita tomar Something
, puede usar un constructor SAM:
call(Something { /* do something */ })
Cualquier tipo de SAM (interfaz de Java con un método abstracto) obtiene automáticamente una function de constructor que convierte una lambda en su instancia.
Kotlin requiere que la llamada tenga algo de interfaz.
() -> Kotlin.Unit
No satisface el requisito de tipo.
Puedes hacerlo
call (object : Something { override fun doSomething() { println("Passing an interface to call in kotlin!") } })
- ¿Es posible usar Mockito en Kotlin?
- Que hace ?. significa en Kotlin cuando se usa en el lado izquierdo de una tarea?