Mutare sul posto con inout
Permetta a una funzione di modificare il valore del chiamante.
Mutare sul posto con inout è una lezione Mojo Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Mojo Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Mojo Academy include 4 lezioni in totale.
A volte è necessario modificarlo
Il prestito consente solo di leggere. A volte, però, una funzione deve davvero modificare il valore del chiamante, ad esempio incrementando un contatore. ✏️
Ecco inout
La convenzione inout dà alla funzione accesso mutabile. Le modifiche apportate al suo interno si riflettono nella variabile del chiamante.
Dentro e fuori
Il nome dice tutto: il valore entra, Lei lo modifica e il valore aggiornato torna al chiamante. Non viene restituita alcuna copia.
Contrassegnare un parametro
Scriva inout prima del nome del parametro. Ora le assegnazioni all'interno della funzione aggiornano direttamente la variabile originale.
fn increment(inout n: Int):
n += 1Chiamarlo
Passi una variabile e osservi come cambia dopo la chiamata. La funzione ha modificato il valore del chiamante sul posto, senza bisogno di un valore restituito.
var count = 5
increment(count)
print(count) # 6Deve essere modificabile
L'argomento passato a un parametro inout deve essere un var modificabile. Non può passargli un valore letterale fisso o un valore preso in prestito.
Esclusivo durante il prestito
Finché una funzione mantiene un riferimento inout, nient'altro può accedere a quel valore. Questa regola di esclusività impedisce modifiche in conflitto.
Nessuna copia nascosta
Come il prestito, inout funziona tramite riferimento, quindi non viene creata alcuna copia completa. Può modificare il valore senza pagare il costo della duplicazione.
Il chiamante ne mantiene la proprietà
Con inout il chiamante mantiene la proprietà. La funzione prende in prestito il valore in modo modificabile solo per la durata della chiamata, poi restituisce il controllo.
Quando scegliere inout
Utilizzi inout quando l'unico scopo di una funzione è aggiornare un valore che il chiamante continuerà a usare, ad esempio per espandere un buffer o reimpostare un campo.
Lettura e modifica a confronto
Finora: borrowed significa sola lettura, inout significa lettura e scrittura. Scegliere quello giusto indica con precisione ai lettori cosa fa una funzione.
Verifica rapida
Verifichiamo che cosa consente inout.
Riepilogo
inout consente a una funzione di modificare sul posto il valore del chiamante, tramite riferimento e senza copie. Il chiamante ne mantiene la proprietà per tutto il tempo. 🎯
Domande Frequenti
La lezione «Mutare sul posto con inout» è gratuita?
Sì — il testo completo di «Mutare sul posto con inout» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Mojo Academy, passa a CoddyKit PRO. Il corso Mojo Academy include 4 lezioni in totale.
Cosa imparerò in «Mutare sul posto con inout»?
Permetta a una funzione di modificare il valore del chiamante. Eserciti Mojo Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Mojo Academy?
Non è richiesta alcuna esperienza precedente. Mojo Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Mutare sul posto con inout»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Mojo Academy?
Sì. Ogni lezione Mojo Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Prendere in prestito argomenti in sola lettura
- Mutare sul posto con inout
- Prendere ownership con owned
- L'operatore di trasferimento