GO FURTHER, FASTER: Try the Swift Career Accelerator 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.

Hacking with Swift is sponsored by RevenueCat.

SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's Paywalls allow you to remotely configure and A/B test your entire paywall UI without any code changes or app updates.

Learn more here

Sponsor Hacking with Swift and reach the world's largest Swift community!

BUY OUR BOOKS
Buy Pro Swift Buy Pro SwiftUI 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 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 Beyond Code

Was this page useful? Let us know!

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.