/ / Perché nell'array immutabile con valore rapido può essere modificato? - veloce

Perché nell'array immutabile in un valore veloce può essere cambiato? - rapido

In un attimo è possibile modificare un valore in un array immutabile, ma non è possibile modificare un valore in un dizionario immutabile Perché?

let imArray = ["Ram","Shyam","Bharat"]
imArray[2] = "Abhimanyu" // this change will be apply though it is immutable

risposte:

2 per risposta № 1

A partire dal Documentazione Swift di Apple, sotto Mutabilità delle collezioni...

L'immutabilità ha un significato leggermente diverso perarray, tuttavia. Non è ancora consentito eseguire alcuna azione che potrebbe modificare la dimensione di un array immutabile, ma è consentito impostare un nuovo valore per un indice esistente nell'array. Ciò consente al tipo di array di Swift di fornire prestazioni ottimali per le operazioni di array quando la dimensione di un array è fissa.


5 per risposta № 2

MODIFICARE: Nelle note di Xcode 6 beta 3, questo è ora cambiato. Ora si comportano allo stesso modo.

Array in Swift è stato completamente riprogettatoavere un valore pieno semantiche come Dictionary e String hanno sempre avuto in Swift. Questo risolve vari problemi di mutabilità - ora è un array "let" completamente immutabile e un array "var" è completamente mutabile - si compone correttamente con Dictionary e String e risolve altri più in profondità i problemi. La semantica del valore può essere sorprendente se sei abituato Array NSArray o C: una copia dell'array ora produce un full e copia indipendente di tutti gli elementi usando una copia pigra efficiente implementazione. Questo è un grande cambiamento per Array e ci sono ancora alcuni problemi di prestazione da affrontare. Si prega di vedere lo Swift Linguaggio di programmazione per ulteriori informazioni. (17192555)


Ho parlato con un ingegnere Apple riguardo a ciò nel WWDC

Per gli array, quando lo definisci come costante, significa che buffer di supporto è costante e quindi è possibile modificare il contenuto del buffer, ma non sostituire il buffer o modificarne la lunghezza.

Per i dizionari, è completamente immutabile.

Naturalmente, se pensi che dovrebbe comportarsi diversamente, invia un biglietto a loro!