2015-03-23 20 views
10

So che static parola chiave viene utilizzata per dichiarare tipo di variabile/metodo struct, enum eccstatico vs classe come variabile di classe/metodo (Swift)

Ma oggi ho trovato che può essere utilizzato anche in class entità.

class foo { 
    static func hi() { 
    println("hi") 
    } 
    class func hello() { 
    println("hello") 
    } 
} 

Qual è l'uso della parola chiave static in class entità?

Grazie!

edit: mi riferisco a Swift 1.2 se questo fa alcuna differenza

+0

In quale versione di Xcode stai provando quel codice? –

+0

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html#//apple_ref/doc/uid/TP40014097-CH15-ID241? – Larme

risposta

18

Dalle Xcode 3 beta 3 note di rilascio:

metodi e proprietà “statiche” sono ora autorizzati a classi (come un alias per "class final").

Così Swift 1.2, hi() definito come

class foo { 
    static func hi() { 
    println("hi") 
    } 
} 

è un metodo tipo (cioè un metodo chiamato dal tipo stesso) anch'esso finale (cioè non può essere sovrascritto in una sottoclasse).

+0

buona cattura. Grazie! –

3

Nelle classi viene utilizzato esattamente per lo stesso scopo. Tuttavia, prima che Swift 1.2 (attualmente in beta) static non fosse disponibile, era stato reso disponibile l'identificatore class alternativo per la dichiarazione dei metodi statici e delle proprietà calcolate, ma non delle proprietà memorizzate.