2015-05-14 21 views
5

Ho visto domande simili su SO, ma nessuno in realtà ha la risposta a questa domanda. "La Swift Programming Language" libro (v. 1.2) dice:Proprietà di tipo memorizzato per le classi in Swift

Per le classi, è possibile definire le proprietà di tipo calcolati solo

E poi nella pagina successiva che hanno il seguente esempio (ho ottenuto liberarsi di alcuni codice per brevità):

class SomeClass { 
    static var storedTypeProperty = "Some value." 
    // ... 
} 

Anche il nome della variabile dice che è una proprietà di tipo memorizzato (non una calcolata).

Aggiornamento: È possibile impostare proprietà memorizzate per le classi, vedere la risposta dettagliata di seguito. Venuto fuori il libro non è stato aggiornato con le modifiche in Swift 1.2 per questa parte.

risposta

7

Le proprietà statiche memorizzate nelle classi sono state introdotte con Swift 1.2. L'elenco Xcode 6.3 Release Notes sotto Swift Language Enhancements (enfasi aggiunta):

static” metodi e proprietà sono ora ammessi nelle classi (come alias per class final). Ora è possibile dichiarare statico memorizzato proprietà in classi, che dispongono di memoria globale e sono pigramente inizializzato al primo accesso (come le variabili globali).

L'esempio

class SomeClass { 
    static var storedTypeProperty = "Some value." 
    // ... 
} 

è un esempio di una struttura statica di una classe. La dichiarazione

Per le classi, è possibile definire le proprietà di tipo calcolati solo

non è corretto, non è ancora stato aggiornato in base a questa modifica della lingua.

0

La documentazione sembra incoerente sia con gli esempi nel libro sia con il codice effettivo. Ecco un esempio di REPL:

1> class Foo { 
    2.  static var _bar = 8 
    3.  static var bar : Int { return _bar } 
    4. } 
    5> Foo.bar 
$R0: Int = 8 
    6> 

C'è chiaramente una proprietà del tipo definita.

+1

Grazie, ho già capito tutto ciò che hai scritto. La domanda riguarda la citazione dal libro che afferma chiaramente che non è possibile definire le proprietà del tipo memorizzato per le classi. E poi continuano e lo definiscono in una classe. Senza proprietà di calcolo associate, come quella che hai fornito nella risposta. –

Problemi correlati