¿Qué significa el signo más antes de un método Kotlin?


8

Estoy estudiando Kotlin y estaba viendo AndroidDevSummit, más específicamente la presentación "Undestanding Compose" de Leland Richardson.

Durante la presentación (a 28min26seg), mostró el siguiente código:

@Composable
fun App(items: List<String>, query: String) {
    val results = +memo(items, query) {
        items.filter { it.matches(query) }
    }
    // ...
}

¿Qué significa el signo más "+" antes del método "memo"?


1
Cuando se usa una sobrecarga del operador de esta manera, puede hacer clic con el botón Ctrl y hacer clic en Intellij / Android Studio para saltar a la declaración de función para ver qué hace.
Tenfour04

Ok, @ Tenfour04, gracias, pero es solo una característica y no el propósito del signo "más", ¿verdad?
Jose Silva

1
Derecha. Solo digo que puede usar eso para averiguar qué función está llamando el operador.
Tenfour04

1
Sí, puede saltar a la declaración de unaryPlus, pero esto no significa que pueda entender su propósito. Allí encontrará el comentario "Resuelve el efecto y devuelve el resultado".
Puntero nulo

Respuestas:


2

+es algo así como una invocación de operador para efectos. Las funciones que devuelven efectos simplemente devuelven un objeto para el efecto y + dice "agrégalo a la composición aquí"

por Adam Powell sobre Kotlin Slack

El hilo completo de la holgura de Kotlin

El +operador será eliminado en el futuro, para los estados, probablemente usará Delegados de propiedades, algo como esto:var myState by state { "value" }


2
Gracias @DevSrSouza, pero ¿podría aclarar qué hace y qué es un efecto? Los enlaces de Slack no están disponibles.
Jose Silva

1
De una charla que escuché hace días, los efectos son cualquier cosa que pueda cambiar en el mundo real, como un valor que puede cambiar en otro lugar de su aplicación y afectar su interfaz de usuario. intente unirse por este enlace: slack.kotlinlang.org
DevSrSouza
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.