Sobes.tech
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.