Tengo una function en línea que acepta dos lambdas. Esta function se llama en un punto de acceso de mi código y, a pesar de estar en línea, se crean miles de objects para los cuerpos. Lo interesante es comentar, o replace los cuerpos con llamadas simples como println y todo funciona perfectamente. ¡Pero por […]
Tengo varios objects para reinterpretar la memory: interface reinterpreter<T> { operator fun get(index: Int): T operator fun set(index: Int, value: T): Any } object vec1bData : reinterpreter<Vec1b> { override operator fun get(index: Int) = Vec1b(data, index * Vec1b.size) override fun set(index: Int, value: Vec1b) = value.to(data, index * Vec1b.size) } pero cuando escribo inline fun […]
Estoy convirtiendo mi function tiene lambda como parameter en inline function en inline function para la mejora del performance. Tengo una list de lambda de tipo MutableList<(Authenticate) -> Unit> variable como miembro de datos en la class. Cuando trato de agregar lambda parameter a la list . El comstackdor de Kotlin dice: Uso ilegal de […]
¿Es posible recibir como un parámetro lambda en línea un tipo de function que tiene un retorno garantizado tipo R pero un número variable de arguments ? Para simplificar, considere lo siguiente: inline fun <R> Boolean?.tfn(tru:()->R, fls:()->R, nul:()->R) = if (this == null) nul() else if (this) tru() else fls() Supongamos que tengo otras funciones […]
He acortado los nombres de algunas funciones extranjeras de uso frecuente (que no controlo) con "alias", según los consejos que recibí en una pregunta anterior . Esto ha funcionado bien para las funciones de extensión; sin embargo, tengo algunas funciones de primer nivel que también me gustaría crear. Para un ejemplo simplificado, considere la function […]
Un parámetro de tipo reificado en Kotlin evita el borrado de parameters de tipo y permite que el parámetro de tipo sea conocido en time de ejecución. Esto permite que el siguiente código se compile y ejecute como se esperaba: inline fun <reified T> isA(value: Any) = value is T Sin embargo, cuando trato de […]
Tengo una function genérica que necesita crear una instancia de un object de su argumento genérico y pasarlo a una instancia de alguna interfaz. Hasta donde yo sé, la única forma de instanciar ese object genérico es haciendo que la function esté en línea y reificando ese parámetro de tipo. Pero no quiero exponer la […]
A menudo encuentro errores en las funciones inline de Kotlin donde los parameters lambda deben marcarse sin línea. Otras veces, los parameters lambda parecen funcionar bien. He leído la documentation de Kotlin de las funciones en línea , y parece que este es el pasaje operativo que explica la regla: Las lambdas insertables solo se […]
Al pasar una function lambda o anónima a funciones en línea como parámetro, es bastante simple, el código se pega a la position de llamada, pero al pasar una function local como parámetro, el resultado parece diferente (como se muestra a continuación). Me pregunto si está en línea? ¿Por qué o por qué no? Por […]
¿Cuáles son algunas forms de ofuscar o limitar el acceso a los miembros públicos de una class? La motivación para hacer esto es que me gustaría poder poner en inline un método, pero necesita acceso a otros miembros de la class, lo que requiere que sean public , sin embargo, preferiría que estos miembros no […]