2014-09-04 8 views
5

में फ़ंक्शंस और चर के लिए नामस्थान यदि आप इस कोड को चलाते हैं, तो परिवर्तनीय f फ़ंक्शन f को छाया लग रहा है। क्या फ़ंक्शन f तक पहुंचने के लिए वैसे भी है?स्विफ्ट

func f (a:Int)->Int{ 
    return a + 43 
} 

var f = {(a:Int) in a + 42} 

var z = f(1) 
println(z) 
+0

आप ऐसा करने का प्रयास क्यों करते हैं? उर्फ नाम दोनों नाम एक ही नाम के साथ –

+4

मुझे विश्वास नहीं है कि एक तरीका है, और मैं इसे संकलक में एक दोष मानता हूं। यह एक त्रुटि होनी चाहिए। मैं इसके बारे में एक रडार खोलने की सलाह देते हैं। दिलचस्प बात यह है कि इससे कोई फर्क नहीं पड़ता कि पहले घोषित किया गया है। Var हमेशा जीतता है। –

+0

मैं इसके लिए एक रडार जोड़ूंगा। – cfischer

उत्तर

1

सं

स्विफ्ट में, समारोह घोषणाओं बस क्या आपको लगता है कि बंद + चर बात के साथ किया था के लिए शॉर्टकट हैं। यही है, फ़ंक्शन नाम अनिवार्य रूप से स्थिरांक हैं और हमेशा इस तरह के रूप में देखा जाना चाहिए (आप किसी संदर्भ के रूप में, ब्रैकेट के बिना फ़ंक्शन नाम के आसपास भी पास कर सकते हैं)।

आप क्या कर रहे हैं यह है कि आप नाम एफ को परिवर्तनीय बंद करने के लिए पुनः लोड कर रहे हैं। ऐसा लगता है कि स्विफ्ट में एक कंपाइलर मुद्दा है जिसके बारे में शिकायत नहीं है। हालांकि, यह समस्या कभी भी अच्छे कोड में नहीं होगी, इसलिए यह वास्तविक समस्या नहीं है।

हालांकि यह थोड़ा उलझन में हो सकता है।