Percursos
/
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 dá origem a um erro de compilação. Se uma função quiser modificar o valor de um parâmetro, tem de usar um parâmetro in-out para tornar essa mutabilidade explícita.

Para usar parâmetros in-out, quem programa tem de garantir três coisas:

  1. A definição da função tem de 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 tem de ser declarado como variável, não como constante. Da mesma forma, não pode ser um literal.
  3. O nome da variável tem de ser precedido por um & na chamada à função, marcando-o explicitamente como modificável.

Quando isto se verifica, a função faz uma cópia interna do parâmetro in-out, modifica-a conforme indicado no corpo da função e, quando a função termina, 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")
Há mais um par de regras a ter em conta em relação aos parâmetros in-out.

1. Dentro de uma função com parâmetros in-out, não podes 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)` dá origem a um erro de compilação.
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Parâmetros inout