NEW: Join my free 100 Days of SwiftUI challenge today! >>

Structuri

Structurile sunt tipuri de date complexe, ceea ce înseamnă că sunt formate din mai multe valori. Tu creezi o instanță a unei structuri și îi completezi valorile, după care poți să o folosești în codul tău ca pe o singură valoare. De exemplu, am putea defini o structură Person care conține două proprietăți: clothes și shoes:

struct Person {
    var clothes: String
    var shoes: String
}

Atunci când definești o structură, Swift face ca asta să fie foarte ușor de creat deoarece generează automat așa numiții inițializatori impliciți. Altfel spus, înseamnă că poți crea structuri prin adăugarea valorilor inițiale ale celor două proprietăți astfel:

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

De îndată ce ai creat instanța structurii, poți să îi accesezi membrii prin a scrie numele structurii, un punct, apoi proprietatea pe care vrei să o accesezi:

print(taylor.clothes)
print(other.shoes)

Dacă atribui o structură altei structuri, în spate Swift o copiază astfel încât este un duplicat complet, de sine stătător al originalului. Ei bine, nu este în totalitate adevărat: Swift folosește o tehnică numită "copiere la scriere" ceea ce înseamnă că va copia datele doar atunci când încerci să le modifici.

Pentru a te ajuta să întelegi cum funcționează copierea de structuri, scrie asta în playground:

struct Person {
    var clothes: String
    var shoes: String
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")

var taylorCopy = taylor
taylorCopy.shoes = "flip flops"

print(taylor)
print(taylorCopy)

Se creează două structuri Person, apoi o a treia structură numită taylorCopy se creează ca și copie a lui taylor. Ceea ce se întâmplă în continuare este interesant: structura taylorCopy este modificată în cod, apoi este afișată împreună cu taylor. Dacă te uiți în panoul cu rezultate (se poate să fie nevoie să-l redimensionezi) vei vedea că acea copie are o valoare diferită față de cea originală: modificând-o pe una nu se modifică și cealaltă.

Funcții în interiorul structurilor

Poți să ai funcții în interiorul structurilor, și de fapt este o idee bună să faci asta pentru toate funcțiile care citesc sau modifică date din interiorul structurii. De exemplu, am putea adăuga o funcție structurii noastre Person pentru a descrie ce purtau, în felul acesta:

struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

Mai este un lucru pe care trebuie să-l știi dar nu-l poți vedea în cod: Când scrii o funcție în interorul unei structuri, se numește metodă defapt. În Swift scrii func indiferent dacă este o funcție sau o metodă, dar distincția se pastrează când vorbești despre ele.

SPONSORED Instabug helps you identify and resolve severe crashes quickly. You can retrace in-app events and know exactly which line of code caused the crash along with environment details, network logs, repro steps, and the session profiler. Ask more questions or keep users up-to-date with in-app replies straight from your dashboard. Instabug takes data privacy seriously, so no one sees your data but you! See more detailed features comparison and try Instabug's crash reporting SDK for free.

BUY OUR BOOKS
Buy Pro Swift Buy Swift Design Patterns Buy Testing Swift Buy Hacking with iOS Buy Swift Coding Challenges Buy Swift on Sundays Volume One Buy Server-Side Swift (Vapor Edition) Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Advanced iOS Volume Three Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with macOS Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Server-Side Swift (Kitura Edition) Buy Beyond Code

Was this page useful? Let us know!