2014-06-05 23 views
9

में एक सामान्य रूप से टाइप किए हुए चर को nil` मूल्य `नियत मुझे लगता है कि var value: T = nil नीचे क्योंकि XCode सामान्य प्रकार टी nil मूल्य परिवर्तित नहीं कर सकते त्रुटि पैदास्विफ्ट

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

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

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

त्रुटि संदेश पढ़ता

'_coversion' है कि आपूर्ति की तर्क स्वीकार करता है के लिए एक अधिभार नहीं मिल सका

स्विफ्ट में एक चर के लिए nil मान असाइन करने का कोई तरीका है?

उत्तर

20

आप चर के रूप में वैकल्पिक घोषित करने के लिए की जरूरत है 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

ओह, कोई और सीमा? – Sulthan

+0

खेल के मैदान में, यह एक त्रुटि उत्पन्न नहीं करता है। शायद यह अद्यतन किया गया है: var value: टी? = शून्य – Kokodoko

0

var value: T? = nil 

प्रश्न चिह्न का उपयोग करके देखें जिसका अर्थ है कि यह या तो एक मूल्य है या नहीं के बराबर हो सकता है, चर एक वैकल्पिक बना देता है। एक प्रकार बाधा के साथ टी की घोषणा के द्वारा

error: unimplemented IR generation feature non-fixed class layout 

आप इसे हल करने के कर सकते हैं:

var value: T? = nil 

दुर्भाग्य से यह वर्तमान में एक लागू नहीं किया गया संकलक सुविधा को गति प्रदान करने लगता है: