Trilhas
/
Swift
Swift
/
Programa
/
Parâmetros inout
Pa

Parâmetros inout em Swift

1 exercício

Sobre Parâmetros inout

Dentro do corpo de uma função, os parâmetros são tratados como constantes, não como variáveis; tentar modificar o valor de um parâmetro gera um erro em tempo de compilação. Se uma função quiser modificar o valor de um parâmetro, é preciso usar um parâmetro in-out para deixar essa mutabilidade explícita.

Para usar parâmetros in-out, é preciso ter certeza de três coisas:

  1. A definição da função precisa marcar explicitamente os parâmetros in-out, escrevendo a palavra-chave inout entre o : e o nome do tipo na anotação de tipo do parâmetro.
  2. O valor passado ao parâmetro in-out precisa ser declarado como uma variável, não como uma constante. Da mesma forma, ele não pode ser um literal.
  3. O nome da variável precisa ser precedido por um & na chamada da função, marcando explicitamente que ela pode ser modificada.

Quando isso é feito, a função cria uma cópia interna do parâmetro in-out, modifica essa cópia conforme indicado no corpo da função e, quando retorna, copia o valor modificado de volta para a variável que foi passada.

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
Existem mais algumas regras sobre parâmetros in-out que é bom você conhecer.

1. Dentro de uma função com parâmetros in-out, você não pode referenciar a variável que foi passada como parâmetro in-out.
2. A mesma variável não pode ser passada como vários parâmetros in-out na mesma função.
   Por exemplo, `inoutFunc(&mutVar, &mutVar)` gera um erro de compilação.
Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Parâmetros inout