English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funções Infix no Kotlin

Kotlin Orientado a Objetos (OOP)

Neste artigo, você aprenderá a usar o símbolo infix para chamar funções no Kotlin (com exemplos).

Antes de aprender como criar funções com notação infixa, vamos estudar dois funções infixas comuns.

Quando você usa || e &&& operações, o compilador busca as funções or e and, respectivamente, e chama-as em segundo plano.

Essas funções suportam a notação infixa.

fun main(args: Array<String>) {
    Exemplo: funções or & and no Kotlin
    val a = true
    val b = false
    var result: Boolean // result = a or b
    a.and(b)
    a.or(b) // result = a and b
    a.and(b)
}

Quando você executar o programa, a saída será:

println("result = $result")
result = true

result = false

No programa acima, use a expressão a or b em vez de a.or(b), e use a expressão a and b em vez de a.and(b). Isso é permitido porque essas funções suportam a notação infixa.

Como criar uma função com sinal infix?

  • Você pode usar a notação infixa para chamar funções no Kotlin, se a funçãoMembro da funçãoouFunção de extensão).

  • Tem apenas um parâmetro.

  • Marcada com a palavra-chave infix.

Exemplo: função definida pelo usuário com notação infixa

class Structure() {
    infix fun createPyramid(rows: Int) {
        var k = 0
        for (i in 1..rows) {
            k = 0
            for (space in 1..rows-i) {
                print(" ")
            }
            while (k != 2*i-1) {
                print("* )
                ++k
            }
            println()
        }
    }
}
fun main(args: Array<String>) {
    val p = Structure()
    p createPyramid 4       // p.createPyramid(4)
}

Quando você executar o programa, a saída será:

      * 
    * * * 
  * * * * * 
* * * * * * *

Aqui, createPyramid() é uma função infixa que cria a estrutura da pirâmide. É um membro da classe Structure e aceita um parâmetro do tipo Int, começando com a palavra-chave infix.

O número de linhas da pirâmide depende do parâmetro passado para a função.