WEBVTT 00:00:00.000 --> 00:00:03.000 Finora ad ora abbiamo detto che la mutazione 00:00:03.000 --> 00:00:05.000 modifica un oggetto esistente. 00:00:05.000 --> 00:00:10.000 Ma non si può ancora vedere la differenza evidente con quello che facciamo con le stringhe. 00:00:10.000 --> 00:00:14.000 Vedremo bene questa differenza quando introdurremo una nuova variabile. 00:00:14.000 --> 00:00:17.000 Torniamo all'esempio precedente, 00:00:17.000 --> 00:00:19.000 aggiungeremo ora un ulteriore assegnazione di variabile, 00:00:19.000 --> 00:00:23.000 introducendo una nuova variabile. 00:00:23.000 --> 00:00:25.000 Supponiamo di introdurre la viaribile 'q' . 00:00:25.000 --> 00:00:29.000 Ed assegniamo 'p' a 'q' , che significa che il valore di 'p' , 00:00:29.000 --> 00:00:31.000 che sarebbe questo oggetto lista, 00:00:31.000 --> 00:00:34.000 fa ora riferimento a 'q' . 00:00:34.000 --> 00:00:37.000 La cosa importante qui avviene dopo l'assegnazione, 00:00:37.000 --> 00:00:40.000 'p' e 'q' si riferiscono alla stessa lista. 00:00:40.000 --> 00:00:43.000 Supponiamo di aver fatto una assegnazione 00:00:43.000 --> 00:00:50.000 per modificare il valore di uno degli elementi di 'q' . 00:00:50.000 --> 00:00:53.000 Bhé, questo cambierà l'elemento quattro di 'q' , 00:00:53.000 --> 00:00:55.000 quindi questo è l'elemento quattro di 'q' . 00:00:55.000 --> 00:00:58.000 Cambierà il valore 00:00:58.000 --> 00:01:01.000 con il punto esclamativo. 00:01:01.000 --> 00:01:03.000 Cambierà anche il valore di 'p' . 00:01:03.000 --> 00:01:07.000 Ma l'assegnazione non contiene in alcun modo 'p' , 00:01:07.000 --> 00:01:11.000 il fatto che 'p' e 'q' si riferiscano allo stesso oggetto 00:01:11.000 --> 00:01:13.000 significa che è cambiato il valore di 'p' . 00:01:13.000 --> 00:01:15.000 Per vedere come questo si comporti diversamente con le stringhe 00:01:15.000 --> 00:01:17.000 proviamo a farlo con una stringa. 00:01:17.000 --> 00:01:20.000 Vedete se riuscite ad indovinare cosa succede se assegniamo 00:01:20.000 --> 00:01:23.000 un nuovo valore alla prima lettera della stringa. 00:01:23.000 --> 00:01:25.000 Lanciamo il programma per vedere cosa succede. 00:01:25.000 --> 00:01:27.000 Quello che otteniamo è un errore, 00:01:27.000 --> 00:01:30.000 poiché la stringa è un oggetto immutabile. 00:01:30.000 --> 00:01:32.000 Non c'è modo di cambiare il valore di una stringa, 00:01:32.000 --> 00:01:36.000 e l'errore ci dice che non è possibile fare assegnazioni all'interno di una stringa, 00:01:36.000 --> 00:01:41.000 a causa del tipo di oggetto, poiché è immutabile, non accetta l'assegnazione. 00:01:41.000 --> 00:01:44.000 Una delle differenze principali tra oggetti mutabili e immutabili 00:01:44.000 --> 00:01:47.000 è che se un oggetto è mutabile 00:01:47.000 --> 00:01:51.000 dobbiamo fare attenzione alle altre variabili che potrebbero far riferimento allo stesso oggetto. 00:01:51.000 --> 00:01:53.000 Possiamo cambiare il valore dell'oggetto, 00:01:53.000 --> 00:01:57.000 e ciò cambierà non solo la variabile a cui noi pensiamo faccia riferimento 00:01:57.000 --> 00:02:00.000 bensì tutte le altre variabili assegnate allo stesso oggetto. 00:02:00.000 --> 00:02:02.000 Vediamo un esempiio. 00:02:02.000 --> 00:02:07.000 Ho inizializzato 'p' assegnandolo alla lista che contiene 'Hello' . 00:02:07.000 --> 00:02:11.000 Ora ho un'assegnazione che introduce la nuova variabile 'q' 00:02:11.000 --> 00:02:13.000 e che assegna 'p' a quella variabile. 00:02:13.000 --> 00:02:15.000 Stampiamo ora il valore di 'p' e 'q' , 00:02:15.000 --> 00:02:19.000 e vedremo che entrambe conterranno la stringa 'Hello' . 00:02:19.000 --> 00:02:23.000 Cambiamo ora il valore della posizione zero. 00:02:23.000 --> 00:02:26.000 Avremmo una assegnazione che memorizza 00:02:26.000 --> 00:02:30.000 nella posizione zero di 'p' la lettera 'y' . 00:02:30.000 --> 00:02:35.000 Questo cambia il valore di 'p' . 00:02:35.000 --> 00:02:43.000 Cosa sorprendente potrebbe essere che questo cambia anche il valore di 'q' . 00:02:43.000 --> 00:02:46.000 Anche se 'q' non compare nell'assegnazione , 00:02:46.000 --> 00:02:49.000 lo cambia in quanto 'q' 00:02:49.000 --> 00:02:52.000 si riferisce allo stesso oggetto di 'p' .