Sobes.tech
Intern

Šta su tipovi podataka i koji postoje?

sobes.tech АИ

Одговор од АИ

Tipovi podataka definišu skup mogućih vrednosti i operacija koje se na njih mogu izvršiti. U Swift-u se dele na Tipove vrednosti i Tipove referenci.

Tipovi vrednosti:

  • Vrednosti se kopiraju prilikom dodeljivanja ili prosleđivanja funkciji.
  • Svaka promenljiva ili konstanta čuva sopstvenu, nezavisnu kopiju podataka.
  • Izmene u jednoj kopiji ne utiču na ostale.

Primeri tipova vrednosti:

  • Strukture (struct)
  • Enumeracije (enum)
  • Tuple (tuple)
  • Osnovni tipovi: Int, Double, Bool, String, nizovi (Array), rečnici (Dictionary), skupovi (Set).
// Primer tipa vrednosti: struct
struct Point {
    var x: Int
    var y: Int
}

var p1 = Point(x: 1, y: 2)
var p2 = p1 // p2 dobija kopiju p1
p2.x = 10 // Izmena u p2 ne utiče na p1

print("p1: \(p1)") // p1: Point(x: 1, y: 2)
print("p2: \(p2)") // p2: Point(x: 10, y: 2)

Tipovi referenci:

  • Vrednosti se ne kopiraju. Pri dodeljivanju ili prosleđivanju
  • funkciji, prosleđuje se referenca na istu instancu podataka u memoriji.
  • Više promenljivih ili konstanti može da se odnosi na istu instancu.
  • Izmene putem jedne reference su vidljive kroz sve ostale.

Primeri tipova referenci:

  • Klase (class)
  • Funkcije (func)
  • Zatvaranja (closure)
// Primer tipa referenci: class
class Circle {
    var radius: Double

    init(radius: Double) {
        self.radius = radius
    }
}

var c1 = Circle(radius: 5.0)
var c2 = c1 // c2 se odnosi na istu instancu kao i c1
c2.radius = 10.0 // Izmena u c2 utiče na c1

print("c1 radius: \(c1.radius)") // c1 radius: 10.0
print("c2 radius: \(c2.radius)") // c2 radius: 10.0

Tabela sa glavnim tipovima:

Kategorija Tip(ovi) Tip vrednosti/referencni Opis
Celi brojevi Int, UInt, Int8, UInt8 itd. Vrednost Celi brojevi različitih veličina, sa i bez znaka
Decimale Float, Double Vrednost Brojevi sa decimalnim delom
Logičke vrednosti Bool Vrednost Logičke vrednosti (true ili false)
Nizovi String Vrednost Sekvenca karaktera
Kolekcije Array, Dictionary, Set Vrednost Uređene/neuređene kolekcije istih tipova elemenata
Strukture struct Vrednost Složeni, korisnički definisani tipovi koji čuvaju povezane vrednosti
Enumovi enum Vrednost Definišu opšti tip za grupu povezanih vrednosti
Tuple-ovi (value1, value2, ...) Vrednost Grupisanje više vrednosti u jedan složeni tip
Klase class Referenca Složeni, korisnički definisani tipovi koji podržavaju nasleđivanje i referentno ponašanje
Funkcije () -> Void, (Int) -> String itd. Referenca Blokovi izvršivog koda
Zatvaranja { (parameters) -> return type in code } Referenca Samostalni blokovi koda koje je moguće proslediti i koristiti
Opcije Type? (sintaktički šećer za Optional<Type>) Vrednost Predstavlja ili vrednost tipa Type, ili njegovu odsutnost (nil)

Izbor između tipova vrednosti i referentnih tipova zavisi od zadatka: Vrednosni tipovi su poželjni za male podatke i sigurnost u višedretvenim okruženjima, dok su referentni tipovi za složene objekte koji zahtevaju zajedničko stanje i nasleđivanje.