In the Swift Language Reference, under String Mutability il dit:Est-ce que Swift a une concaténation de chaîne quadratique lors de l'utilisation de var?
Vous indiquez si une chaîne particulière peut être modifié (ou muté) en attribuant à une variable (dans ce cas, il peut être modifié), ou à une constante (auquel cas il ne peut pas être modifié)
on ne sait pas à moi si le « il » qui est mutable est la variable ou la valeur .
Par exemple, si je vous écris:
var s = ""
for i in 0...100 {
s += "a"
}
est-il semblable à la création d'un NSMutableString
et d'appeler appendString
100 fois (c.-à-coût linéaire)?
Ou est-ce semblable à la création d'une série d'instances NSString
toujours plus grandes et en les combinant avec stringByAppendingString
(à savoir le coût quadratique)?
Ou peut-être crée-t-il une sorte de structure de corde dans les coulisses, donc et sont-ils linéaires?
@MarkDickinson J'ai effectivement essayé cela, et il a fonctionné beaucoup plus vite que prévu. Donc, cela semblerait impliquer mutable. Mais, lorsque deux variables mutables sont définies l'une par rapport à l'autre, la mise à jour d'une variable ne met pas à jour l'autre, ce qui implique qu'elle est immuable. Et du point de vue de la conception du langage, il semble vraiment étrange de mettre des informations de type runtime dans var-vs-val. Donc, je ne suis vraiment pas sûr de ce que c'est. –