0Pricing
Mojo Academy · Aula

Mutação no local com inout

Permita que uma função altere o valor de quem a chama.

Mutação no local com inout é uma aula grátis de Mojo Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Mojo Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Mojo Academy inclui 4 aulas no total.

Às vezes é preciso alterá-lo

O empréstimo permite apenas ler. Mas às vezes uma função precisa realmente modificar o valor de quem a chamou, como ao incrementar um contador. ✏️

Conheça inout

A convenção inout dá à função acesso mutável. As alterações feitas dentro dela são refletidas na variável de quem a chamou.

Entrada e saída

O nome diz tudo: o valor entra, você o altera e o valor atualizado volta para quem chamou. Nenhuma cópia é retornada.

Marcando um parâmetro

Você escreve inout antes do nome do parâmetro. Agora, as atribuições dentro da função atualizam diretamente a variável original.

fn increment(inout n: Int):
    n += 1

Fazendo a chamada

Passe uma variável e observe como ela muda depois da chamada. A função editou o valor de quem chamou no próprio lugar, sem precisar retornar nada.

var count = 5
increment(count)
print(count)  # 6

Deve ser mutável

O argumento que você passa para um parâmetro inout deve ser uma var mutável. Você não pode passar um literal fixo nem um valor emprestado.

Exclusivo enquanto emprestado

Enquanto uma função mantém uma referência inout, nada mais pode acessar esse valor. Essa regra de exclusividade evita edições conflitantes.

Sem cópias ocultas

Assim como o empréstimo, inout funciona por referência, portanto não há uma cópia completa. Você obtém mutação sem pagar pelo custo da duplicação.

Quem chamou continua sendo o proprietário

Com inout, quem chamou mantém a propriedade. A função apenas faz um empréstimo mutável durante a chamada e depois devolve o controle.

Quando escolher inout

Use inout quando a função tiver como objetivo principal atualizar um valor que quem chamou continuará usando, como aumentar um buffer ou redefinir um campo.

Leitura e mutação lado a lado

Até aqui: borrowed significa somente leitura, enquanto inout significa ler e escrever. Escolher a opção certa informa exatamente aos leitores o que uma função faz.

Verificação rápida

Vamos verificar o que inout permite fazer.

Recapitulação

inout permite que uma função faça a mutação do valor de quem chamou no próprio lugar, por referência e sem cópia. Quem chamou continua sendo o proprietário durante todo o tempo. 🎯

Perguntas Frequentes

A aula “Mutação no local com inout” é grátis?

Sim — o texto completo de “Mutação no local com inout” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Mojo Academy, atualize para CoddyKit PRO. O curso de Mojo Academy inclui 4 aulas no total.

O que vou aprender em “Mutação no local com inout”?

Permita que uma função altere o valor de quem a chama. Você pratica Mojo Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Mojo Academy?

Nenhuma experiência prévia é necessária. Mojo Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Mutação no local com inout”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Mojo Academy?

Sim. Cada aula de Mojo Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Emprestando argumentos somente para leitura
  2. Mutação no local com inout
  3. Assumindo a propriedade com owned
  4. O operador de transferência
← Voltar para Mojo Academy