В языке Swift Programming в разделе Strings, подраздел String Mutability, он говорит следующее:
Вы указываете, может ли конкретный
String
быть изменен (или изменен) путем назначения его переменной (в этом случае она может быть изменена) или константе (в этом случае она не может быть изменена):
и дает пример кода:
var variableString = "Horse"
variableString += " and carriage"
// variableString is now "Horse and carriage"
let constantString = "Highlander"
constantString += " and another Highlander"
// this reports a compile-time error - a constant string cannot be modified"
Книга в iBooks здесь или в веб-браузере здесь.
В следующем параграфе он утверждает, что "строки являются типами значений".
Мой вопрос: для меня это не похоже на изменяемую строку. Это похоже на то, к чему я привык в Java (или С#, Python и другие): неизменяемые строковые объекты с изменяемыми привязками переменных. Другими словами, существовал объект "Лошадь", а затем он создал новый объект String "Лошадь и каретка" и установил его в одну и ту же переменную. И так как нет способа сказать разницу между ссылкой на неизменяемый объект и тип значения (правильно?), Мне интересно: почему они описывают это так? Есть ли разница между этими строками Swift и тем, как это происходит на Java? (Или С#, Python, Objective-C/NSString)