0Pricing
Swift Academy · Lezione

Struct e classi, proprietà e inizializzatori

Confronti la semantica dei valori con quella dei riferimenti; utilizzi proprietà memorizzate e calcolate, observer delle proprietà, inizializzatori e deinit delle classi.

Struct e classi, proprietà e inizializzatori è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 3 lezioni in totale.

Panoramica

Swift ha due principali tipi compositi: struct (valore) e class (riferimento).

  • Le struct vengono copiate durante l'assegnazione
  • Le class condividono i riferimenti

Valore e riferimento

Le struct copiano i valori; le class condividono i riferimenti. La modifica di b non influisce su a, ma d influisce su c.

struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }

var a = Point(x: 1, y: 1)
var b = a          // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9

let c = CPoint(); c.x = 1
let d = c          // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9

Proprietà

Le proprietà memorizzate contengono dati; le proprietà calcolate derivano i valori al momento dell'accesso.

struct Rectangle {
    var width: Double      // stored
    var height: Double     // stored
    var area: Double {     // computed
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area)  // 12

Osservatori

Utilizzi willSet/didSet per osservare le modifiche alle proprietà memorizzate.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5

Inizializzatori

Le struct hanno un inizializzatore membro per membro. Le class definiscono init (designated) e possono aggiungere inizializzatori convenience.

struct User {
    var name: String
    // memberwise init is synthesized: User(name:)
}
class Person {
    var name: String
    init(name: String) {    // designated
        self.name = name
    }
    convenience init() {    // convenience
        self.init(name: "Guest")
    }
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)

deinit

Solo le class hanno deinit, chiamato quando l'istanza viene deallocata (ARC).

class Temp {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Temp \\(id) deinit") }
}
do {
    let t = Temp(id: 1)
    print("using", t.id)
} // t goes out of scope and deinit may run

Domanda su struct e class

Verifica rapida: quale affermazione contrappone correttamente struct e class?

Riepilogo

Riepilogo: preferisca struct per dati semplici (semantica del valore). Utilizzi class per l'identità condivisa, l'ereditarietà e deinit. Aggiunga proprietà memorizzate o calcolate, osservatori e inizializzatori appropriati.

Domande Frequenti

La lezione «Struct e classi, proprietà e inizializzatori» è gratuita?

Sì — il testo completo di «Struct e classi, proprietà e inizializzatori» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 3 lezioni in totale.

Cosa imparerò in «Struct e classi, proprietà e inizializzatori»?

Confronti la semantica dei valori con quella dei riferimenti; utilizzi proprietà memorizzate e calcolate, observer delle proprietà, inizializzatori e deinit delle classi. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 3.

Quanto tempo richiede la lezione «Struct e classi, proprietà e inizializzatori»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Struct e classi, proprietà e inizializzatori
  2. Proprietà memorizzate e calcolate, observer
  3. Inizializzatori e deinit (classi)
← Torna a Swift Academy