2014-06-05 4 views
9

Penso var value: T = nil sta causando l'errore di seguito perché XCode non può convertire nil valore nel tipo T. genericaAssegnazione `valore quelle negative ad una variabile genericamente digitato Swift

class Node<T> { 
    var value: T = nil 
    var next: Node 

    init(value: T) { 
     self.value = value 
     self.next = Node() 
    } 

    init() { 
     self.next = Node() 
    } 
} 

Il messaggio di errore si legge

Impossibile trovare un sovraccarico per '_coversion' che accetta gli argomenti forniti

C'è un modo per assegnare il valore nil a una variabile in Swift?

risposta

20

è necessario dichiarare la variabile come optional:

var value: T? = nil 

Purtroppo questo momento sembra innescare una caratteristica compilatore non implementato:

error: unimplemented IR generation feature non-fixed class layout 

si può lavorare intorno ad esso dichiarando T con un vincolo di tipo di NSObject:

class Node<T:NSObject> { 
    var value: T? = nil 
    var next: Node 

    init(value: T) { 
     self.value = value 
     self.next = Node() 
    } 

    init() { 
     self.next = Node() 
    } 
} 
+3

Oh, UN'ALTRA limitazione? – Sulthan

+0

Nel campo da gioco, questo non genera un errore. Forse è aggiornato: valore var: T? = niente – Kokodoko

0

Provare a utilizzare

var value: T? = nil 

Il punto interrogativo rende la variabile un optional, il che significa che si può o avere un valore o essere nullo.