Sobes.tech
Junior — Middle

Aké ďalšie dátové typy, okrem tried, sa považujú za referenčné typy v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V jazyku Swift, okrem tried patrí medzi referenčné typy:

  • Záväzky (Closures) — funkcie, ktoré môžu zachytiť a uložiť odkazy na premenné z okolia.
  • Funkcie — vo Swift sú funkcie referenčné typy.
  • Niektoré typy z Objective-C, ako objekty Foundation (NSString, NSArray atď.) — sú implementované ako triedy a sú referenčné typy.

Na rozdiel od štruktúr a enumerácií, ktoré sú typy hodnoty, sú referenčné typy odovzdávané odkazom, teda pri priraďovaní alebo odovzdaní do funkcie sa kopíruje odkaz na ten istý objekt, nie jeho kópia.

Príklad:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let person1 = Person(name: "Alice")
let person2 = person1
person2.name = "Bob"
print(person1.name) // Vypíše "Bob", pretože person1 a person2 odkazujú na ten istý objekt