Qual é o significado do sinal de adição antes de um método Kotlin?


8

Estou estudando Kotlin e estava assistindo o AndroidDevSummit, mais especificamente a apresentação "Undestanding Compose" de Leland Richardson.

Durante a apresentação (aos 28min26seg), ele mostrou o seguinte código:

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

O que o sinal de mais "+" antes do método "memorando"?


1
Quando uma sobrecarga de operador é usada dessa maneira, você pode clicar com a tecla Ctrl pressionada no Intellij / Android Studio para pular para a declaração da função e ver o que ela faz.
Tenfour04

Ok, @ Tenfour04, obrigado, mas é apenas um recurso e não o objetivo do sinal de "mais", está certo?
Jose Silva

1
Direita. Só estou dizendo que você pode usar isso para descobrir qual função o operador está chamando.
Tenfour04

1
Sim, você pode pular para a declaração do unaryPlus, mas isso não significa que você possa entender seu objetivo. Lá você encontrará apenas o comentário "Resolve o efeito e retorna o resultado".
Ponteiro nulo

Respostas:


2

+é como um operador invocar efeitos. As funções que retornam efeitos retornam um objeto para o efeito e + diz "adicione-o à composição aqui"

por Adam Powell em Kotlin Slack

O tópico completo sobre a folga do kotlin

O +operador será removido no futuro, para estados, provavelmente usará Delegados de Propriedade, algo como isto:var myState by state { "value" }


2
Obrigado @DevSrSouza, mas você poderia esclarecer o que faz e o que é um Efeito? Os links do Slack não estão abertos disponíveis.
Jose Silva

1
De uma palestra que escuto dias atrás, efeitos são tudo o que pode mudar no mundo real, como um valor que você pode alterar em outro local do seu aplicativo e afetar sua interface do usuário. tente ingressar neste link: slack.kotlinlang.org
DevSrSouza 26/10/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.