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.