2014-11-04 10 views
16

सभी मुझे क्या करना स्विफ्ट में एक नई परियोजना शुरू करने और जब मैं मैं कोई त्रुटि मिलती है बनाने की कोशिश main.swiftinout पैरामीटर स्विफ्ट संकलक दुर्घटनाओं

struct Foo { 
    let bar: (inout baz: String) ->() 
} 

में जोड़ने की जरूरत:
Command failed due to signal: Segmentation fault: 11

क्या मैं कुछ गलत कर रहा हूं?

मैंने सोचा था कि बंद में शायद inout मापदंडों समर्थित नहीं हैं, लेकिन अगर मैं तो जैसे एक बंद को परिभाषित:

let baz: (inout baz: String) ->() = { baz in 
    baz += "x" 
    return 
} 

या यहाँ तक कि

var baz: (inout baz: String) ->()? 

यह संकलित करता है तथा ठीक चलाता

+2

मैंने सेब बग रिपोर्टर में टिकट खोला। मुझे लगता है कि यह एक बग है। स्विफ्ट कंपाइलर अब थोड़ा छोटी गाड़ी है। – Shuo

+0

आपके पहले उदाहरण में कंपाइलर द्वारा टाइप नहीं किया जा सकता है। आपके दूसरे उदाहरण में संकलक इस तथ्य का कारण पा सकते हैं कि आपने अप्रत्यक्ष रूप से परिभाषित किया है। आखिरी उदाहरण में यह सिर्फ एक वैकल्पिक है इसलिए अस्तित्व हमेशा सत्य रहेगा। – Alex

+0

आप सही हैं; यह विफल रहता है। –

उत्तर

1

बस एक्सकोड 6.3 बीटा के साथ भेजे गए स्विफ्ट 1.2 में इसका परीक्षण किया गया, और यह सफलतापूर्वक संकलित हुआ। तो यह निश्चित रूप से संकलक पर एक बग था जिसे उन्होंने अंतिम रिलीज

0

@ बार्टक च्लेबेक में हल किया था। आपके द्वारा पोस्ट किए गए कोड में, एक अस्पष्ट चीज है (बोल्ड में जाती है): "बार बार: (इनआउट बाज़: स्ट्रिंग) ->()"। अपने कार्य को इस तरह परिभाषित करते समय, आप संकलक को बताते हैं कि आप एक खाली टुपल वापस करने जा रहे हैं। ऐसा लगता है कि कंपाइलर के पुराने संस्करणों में भिन्नता नहीं है (टाइपिंग इंजन में एक बग होना चाहिए) शून्य प्रकार और "खाली टुपल प्रकार" (जिसे "()") के साथ दर्शाया गया है। यहाँ tuples के सिंटैक्स के बारे में शब्द के एक जोड़े है: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html#//apple_ref/doc/uid/TP40014097-CH31-ID448

संभव समाधान: स्पष्ट रूप से वापसी मान प्रकार (जो "शून्य" अपने मामले में है) निर्दिष्ट करें। उम्मीद है की यह मदद करेगा।

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