pass - kotlin receive lambda
Referencia al método de una instancia particular en Kotlin (1)
Desde Kotlin 1.1, puede usar referencias enlazables obligatorias para hacer eso:
val f = a::getItem
list.forEach(myObject::myMethod)
Las versiones anteriores de Kotlin no tienen esta característica y requieren que haga una lambda cada vez, excepto en estos casos simples .
En Java 8 podemos tener una referencia a un método de una instancia de clase. Aquí hay un ejemplo
Function1<Integer, Object> ref = a::getItem;
a es una instancia de la clase Adapter
que tiene el método Object getItem(int i)
.
¿Podemos hacer lo mismo en Kotlin? Probé la misma sintaxis sin éxito. Hasta ahora solo pude crear una referencia de método de extensión como esta:
val ref: Adapter.(Int) -> Any = Adapter::getItem
Pero aquí todavía necesito una instancia de un Adapter
para invocarlo. La otra alternativa que veo es definir una lambda como esta:
val ref: (Int) -> Any = { a.getItem(it) }