Categorias

Crie Funções com Infix Notation em Kotlin

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?