/ / Pourquoi dans un tableau immuable en valeur rapide peut être changé? - rapide

Pourquoi un tableau immuable en valeur rapide peut-il être modifié? - rapide

En bref, une valeur dans un tableau immuable peut être modifiée, mais une valeur dans un dictionnaire immuable ne peut pas être modifiée. Pourquoi?

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

Réponses:

2 pour la réponse № 1

De Documentation "rapide" d’Apple, sous Mutabilité des collections...

L’immuabilité a une signification légèrement différente pourles tableaux, cependant. Vous n'êtes toujours pas autorisé à effectuer une action susceptible de modifier la taille d'un tableau immuable, mais vous pouvez définir une nouvelle valeur pour un index existant dans le tableau. Cela permet au type de tableau Swift’s d’offrir des performances optimales pour les opérations de tableau lorsque la taille d’un tableau est fixée.


5 pour la réponse № 2

MODIFIER: Dans les notes Xcode 6 beta 3, ceci est maintenant changé. Ils se comportent maintenant de la même manière.

Array in Swift a été complètement repensé pouravoir toute sa valeur des sémantiques comme Dictionary et String ont toujours existé dans Swift. Ce résout divers problèmes de mutabilité - maintenant un tableau "let" est complètement immuable, et un tableau "var" est complètement mutable - compose correctement avec Dictionary et String et résout d’autres problèmes plus profonds problèmes. La sémantique des valeurs peut être surprenante si vous êtes habitué à Tableaux NSArray ou C: une copie du tableau produit maintenant une image complète et copie indépendante de tous les éléments en utilisant une copie paresseuse efficace la mise en oeuvre. C’est un changement majeur pour Array, et il y a il reste quelques problèmes de performance à résoudre. S'il vous plaît voir le Swift Langage de programmation pour plus d'informations. (17192555)


J'ai parlé à un ingénieur Apple à ce sujet dans WWDC

Pour les tableaux, lorsque vous le définissez comme une constante, cela signifie que tampon de sauvegarde est constant et vous pouvez donc modifier le contenu du tampon, mais pas échanger le tampon ni en modifier la longueur.

Pour les dictionnaires, c'est complètement immuable.

Bien sûr, si vous pensez que cela devrait se comporter différemment, envoyez-leur un ticket!