2014-06-09 5 views
18

जब मैं घोंसला एक सामान्य struct के अंदर एक वर्ग और समानता ऑपरेटर लागू करने के लिए, इस तरह का प्रयास करें:मैं एक सामान्य संरचना में घिरी कक्षा के लिए ऑपरेटर को कैसे कार्यान्वित करूं?

struct Outer<T> { 
    class Inner : Equatable {} 
} 

@infix func == <T>(lhs: Outer<T>.Inner, rhs: Outer<T>.Inner) -> Bool { 
    return lhs === rhs 
} 

मैं निम्नलिखित त्रुटि मिलती है जब मैं इस परियोजना को चलाने के लिए प्रयास करें:

While emitting IR SIL function @_TFCC4Test5Outer5InnerCU__fMS1_FT_S1_ for 'init' at .../Testing.swift:20:11 
<unknown>:0: error: unable to execute command: Segmentation fault: 11 
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation) 
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254 

हालांकि , यह ठीक काम करता है जब मैं कक्षा घोंसले के बिना एक ही बात करते हैं:

class MyClass : Equatable {} 

@infix func == (lhs: MyClass, rhs: MyClass) -> Bool { 
    return lhs === rhs 
} 

इस संकलक के साथ एक बग है, या मैं कुछ गलत कर रहा हूँ?

+8

इस में एक बग है कंपाइलर, आपको इसकी रिपोर्ट करनी चाहिए। –

+0

हां वर्तमान में कक्षा चर असमर्थित हैं ... जो यहां कारण हो सकता है – Jack

+4

यहां कोई वर्ग चर नहीं है, और वही होता है यदि वे दोनों स्ट्रक्चर हैं। – Jay

उत्तर

4

नेस्टिंग एक class या struct एक सामान्य प्रकार struct में अब XCode6 Beta6 द्वारा अवैध रूप में चिह्नित किया गया है

enter image description here

+0

कोई विचार क्या तर्क यहां है या यह एक कंपाइलर बग है? – Tylerc230

+1

एक्सकोड 6.1.1 के रूप में यह अभी भी अमान्य के रूप में चिह्नित किया गया है। मैं कहूंगा कि यह एक तेज भाषा सुविधा है। आपको शायद इसके पीछे तर्क के लिए ऐप्पल स्विफ्ट मंच में पूछना होगा। इसे एक कंपाइलर बग नहीं माना जाता है (एक कंपाइलर बग, स्विफ्ट टीम पीओवी से है, एक्सकोड को क्रैश करने का कारण क्या है) –

1

आप को परिभाषित अपने ऑपरेटर तो एक बनाने के लिए, एक अलग फाइल या अंतरिक्ष में इनर वर्ग को परिभाषित कर सकता है अपने भीतर की कक्षा में उस प्रकार के var:

class Inner: Equatable {} 
func == (left: Inner, right: Inner) -> Bool { 
    return true 
} 
struct Outer { 
    var myVar: Inner 
} 

बीटा के रूप में 6

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

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