In the Swift Language Reference, under String Mutability mówi:Czy Swift ma kwadratowe połączenie ciągów podczas używania var?
wskazać, czy dany ciąg może być modyfikowana (lub zmutowane), przypisując go do zmiennej (w tym przypadku może być modyfikowana) lub stałym (w którym to przypadku nie można modyfikować)
jest dla mnie jasne, czy „to”, które jest zmienny jest zmienna lub wartość.
Na przykład, jeśli piszę:
var s = ""
for i in 0...100 {
s += "a"
}
Czy jest zbliżona do tworzenia NSMutableString
i nazywając appendString
100 razy (czyli kosztów liniowy)?
Czy jest to podobne do tworzenia serii coraz większych instancji NSString
i łączenia ich z stringByAppendingString
(tj. Kosztem kwadratowym)?
A może tworzy się za kulisami coś w rodzaju konstrukcji linowej, więc jest niezmienna i liniowa w agregacie?
@MarkDickinson Właściwie to spróbowałem i przebiegło to znacznie szybciej, niż się spodziewałem. Wydawałoby się to sugerować zmienność. Ale gdy dwie zmienne zmienne są sobie równe, aktualizacja jednego nie aktualizuje drugiego, co implikuje niezmienny. Z perspektywy projektowania językowego wydaje się dziwne umieszczanie informacji o typie środowiska wykonawczego w war-vs-val. Więc naprawdę nie jestem pewien, co to jest. –