Junior — Middle
Quais são as diferenças entre os tipos de dados em termos de sua semântica: valores e referências?
sobes.tech IA
Resposta da IA
Os tipos de dados, segundo a semântica, dividem-se em tipos de valor (value types) e tipos de referência (reference types).
-
Tipos de valor armazenam os dados diretamente. Ao atribuir ou passar para uma função, o próprio valor é copiado. No iOS (Swift), exemplos incluem
Int,Double,Bool, estruturas (struct). -
Tipos de referência armazenam uma referência à área de memória onde os dados estão. Ao atribuir, a referência é copiada, não os dados. Alterações através de uma referência são visíveis noutras. Em Swift, são classes (
class), objetos.
Exemplo:
struct Point { var x: Int; var y: Int }
class Person { var name: String
init(name: String) { self.name = name } }
var p1 = Point(x: 1, y: 2)
var p2 = p1
p2.x = 10
print(p1.x) // 1 — a cópia não mudou
var person1 = Person(name: "Иван")
var person2 = person1
person2.name = "Пётр"
print(person1.name) // "Пётр" — referência ao mesmo objeto
Compreender a diferença é importante para gerir a memória e o comportamento dos objetos na aplicação.