2014-07-22 10 views
5

मैं निम्नलिखित कोड मिल गया: "। प्रकार बराबर नहीं है"फ्लोट 'मिरर डिस्पोजिशन' स्विफ्ट में परिवर्तनीय नहीं है मिररॉर्डिसपोजिशन क्या है?

let floatValue: Float = 1 
let intValue: Int = 1 

if floatValue == intValue { 
    println("Types and value are equal") 
} else { 
    println("Type is not equal.") 
} 

मुझे पता है कि यह प्रिंट होगा

लेकिन मैं if floatValue == intValue त्रुटि में एक त्रुटि मिली है:

फ्लोट करने के लिए परिवर्तनीय नहीं है 'MirrorDisposition'

मैंने पहले इस त्रुटि कभी नहीं देखा है और के बारे में कुछ भी नहीं मिला यह। इस कोड Xcode 6 बीटा में ठीक से चलाने के 1, 2 और 3 मैं अब Xcode 6 बीटा 4. चल रहा हूँ करता

किसी को भी पता है कि इस त्रुटि का अर्थ है? और अंततः मैं इसके बारे में क्या कर सकता हूं।

उत्तर

16

MirrorDisposition एक मान के Mirror से प्राप्त होने वाले प्रकारों में से एक है (reflect फ़ंक्शन का उपयोग करके)। वे आईडीई के लिए मान प्रदर्शित करने में सक्षम हैं।

/// How children of this value should be presented in the IDE. 
enum MirrorDisposition { 
    case Struct 
    case Class 
    case Enum 
    case Tuple 
    case Aggregate 
    case IndexContainer 
    case KeyContainer 
    case MembershipContainer 
    case Container 
    case Optional 
    case ObjCObject 
} 

त्रुटि संदेश का अर्थ है कि संकलक एक Int के साथ एक Float तुलना करने के लिए एक == ऑपरेटर नहीं मिला। हालांकि, इसे शायद == ऑपरेटर MirrorDisposition और Int के लिए ऑपरेटर मिला, इसलिए यह Float से MirrorDisposition को परिवर्तित करने का प्रयास कर रहा है लेकिन यह स्पष्ट रूप से नहीं हो सकता है, इसलिए आपको एक त्रुटि संदेश मिलता है।

(वैसे, आप जिस प्रकार की त्रुटि प्राप्त करते हैं वह यादृच्छिक है, ऑपरेटर के आधार पर संकलक उपयोग करने का प्रयास करता है। मुझे Float is not convertible to Selector मिल रहा है)।

त्रुटि संदेश एक बग है, Could not find == operator for Float and Int कहने वाला एक संदेश होना चाहिए।

मूल्य समानता की जाँच करने के स्पष्ट ठीक एक डाली उपयोग कर रहा है:

if intValue == Int(floatValue) { 

वहाँ प्रकार इस तरह से तुलना करने के लिए क्योंकि स्विफ्ट में, प्रकार संकलक द्वारा जाँच की जाती है कोई कारण नहीं है। इस प्रकार को स्पष्ट रूप से जांचने का कोई कारण नहीं होना चाहिए (मूल्य प्रकारों के बारे में बोलना, वस्तु प्रकार नहीं, बिल्कुल)।

+0

आपके विस्तारित उत्तर के लिए धन्यवाद, बहुत उपयोगी। – Bas

संबंधित मुद्दे