Articles of kotlin en

Kotlin no logra alinear algunos cuerpos

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 […]

Cobertura de código Función en línea

tengo esta function escrita en Kotlin inline fun <T> handleEmptyResult(observable: Observable<T>, crossinline resultEmptyCheckingFunc: (obj: T?) -> Boolean): Observable<T> { return observable .flatMap { if (resultEmptyCheckingFunc(it)) { Observable.error<T>(ResultEmptyError(Throwable())) } else { Observable.just(it) } } } Pero cuando creé testings unitarias para esta function, muestra 0 cobertura en el informe. Estoy usando jacoco para la cobertura de […]

interfaces genéricas con methods reificados

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 […]

Kotlin: uso ilegal de devolución de parameters en línea

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 […]

Tipo Lambda con número variable de args en Kotlin?

¿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 […]

Alias ​​en línea para la function de Kotlin que incluye generics

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 […]

El parámetro de tipo reificado Kotlin no se puede usar como parámetro de tipo en el cuerpo de 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 […]

Parámetros de tipo reificado e internos

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 […]

Cuando los parameters lambda deben ser noinline en Kotlin?

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 […]

Kotlin: ¿La function local se pasa a funciones en línea como parámetro en línea?

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 […]