Desenvolver funções utilizando notação infixa (que soa muito melhor em inglês: infix notation) é uma das melhores práticas para tornar o código mais prático e familiar. Muitos dizem que as funções infixas nada mais são que uma generalização de operadores.
Claro que esse tipo de função não é exclusividade do Kotlin, a notação infixa já é suportada em muitas outras linguagens como: Python, Haskell, Scala entre outras.
A definição para as notações infixas é: Uma notação comum em aritmética e na lógica, onde os operadores são colocados entre os operandos em que eles atuam.
Só para deixar ainda mais claro olha só uma comparação entre os tipos de operadores:
- Prefix: + 4 4
- Postfix: 3 3 +
- Infix: 8 + 8
Tudo muito lindo e poético mas só dá pra entender de verdade vendo um código de exemplo, não é verdade?
// Define uma extensão para Int usando uma função com notação infixa infix fun Int.soma(valor: Int): Int{ return this + valor } // Agora sim chamamos a função usando a notação infixa 1 soma 2 // Que é o equivalente a 1.soma(2)
Quer outro exemplo? Segura aí:
// Concatenação simples de strings infix fun concat(outra: Int): String{ return this + " " + outra } // Chamada usando notação infixa val exemplo = "Codigo" concat "Fonte"
Vale lembrar o seguinte:
- Repare que para deixar claro que uma funções pode ser utilizada com notação infixa é preciso adicionar a palavra-chave infix na definição da mesma.
- Em Kotlin as funções infixas devem ser anexadas como membro de uma classe ou uma extensão.
- Devem ter somente um único parâmetro
E aí, gostaram?