2014-10-12 14 views
6

मैं एप्पल के स्विफ्ट के लिए परिचय के माध्यम से जा रहा है और इस तरह के उदाहरण में आए किया गया था:स्विफ्ट में किस प्रकार (Int) -> Int) का अर्थ है?

func makeIncrementer() -> ((Int) -> Int) { 

    func addOne(number: Int) -> Int { 
     return 1 + number 
    } 
    return addOne 

} 
var increment = makeIncrementer() 
increment(7) 

आप makeIncrementer समारोह की वापसी प्रकार की वाक्य रचना के बारे में समझाएं कर सकते हैं? मैं समझता हूं कि यह फ़ंक्शन एक और फ़ंक्शन देता है, लेकिन इस संदर्भ में ((Int) -> Int) की भूमिका अभी भी मेरे लिए अस्पष्ट है।

+0

(एक वापसी प्रकार होने के नाते तुरंत प्रासंगिक नहीं है, हालांकि यह एक दिलचस्प उदाहरण ऊपर लाने करता है:एक समारोह है कि a पैरामीटर और रिटर्न प्रकार b) के रूप में टाइप लेता है इसका मतलब यह भी एक प्रकार का हो सकता था एक चर, उदाहरण के लिए।) – user2864740

उत्तर

7

यह इंगित करता है समारोह एक समारोह वापस आती है और उसके वापस आने वाले समारोह एक इनपुट पैरामीटर के रूप में एक Int लेता है और एक Int रिटर्न के रूप में अच्छी तरह से है कि।

स्विफ्ट में कार्यों के भीतर कार्यों को परिभाषित करना पूरी तरह कानूनी है।

2

(Int -> Int) पैरामीटर के रूप में Int लेने और Int लौटने के बंद होने (या फ़ंक्शन) को इंगित करता है।

को बंद करने की घोषणा के लिए प्रकार वाक्य रचना है:

(parameters) -> (return_types) 

parameters पैरामीटर की एक सूची बंद इनपुट के रूप में प्राप्त करता है, और return_types मूल्यों बंद रिटर्न की सूची है। दोनों tuples हैं, लेकिन एक पैरामीटर या एक वापसी प्रकार के मामले में, tuple की पहचान करने वाले कोष्ठक छोड़ा जा सकता है।

parameter -> return_type 

आपके मामले में:

Int -> Int 

को बंद करने Int प्रकार का 1 इनपुट पैरामीटर होने और एक Int

लौटने है तो उदाहरण के लिए एक clousure एक पैरामीटर की उम्मीद है और एक मूल्य लौटने के रूप में परिभाषित किया जा सकता है

वापसी का प्रकार यह सुनिश्चित करने के लिए है कि रिटर्न प्रकार है, लेकिन आप इसे लिख सकते हैं:

func makeIncrementer() -> Int -> Int { 

कौन सा मेरी राय में से

func makeIncrementer() -> (Int -> Int) { 
1

कम पढ़ी जा सकती है मैं तेजी की वाक्य रचना के साथ बिल्कुल परिचित नहीं हूँ, लेकिन मुझे लगता है कि सभी उच्च क्रम कार्यों में एक ही काम करते हैं।

  • एक Int पैरामीटर
  • एक Int

दृश्य स्पष्टीकरण देता है लेता है:

  • एक समारोह है कि रिटर्न कोई पैरामीटर लेता है: makeIncrementer एक समारोह है कि है (01 ,

     makeIncrementer -> (Int -> Int) 
             ^
              | 
              | 
              a function that takes an Int and returns an Int, 
              i.e. (addOne in your case) 
    
    
संबंधित मुद्दे