2013-07-09 7 views
17

मैं this introduction to Polyphonic C# पढ़ रहा हूँ और प्रथम पृष्ठ इस उदाहरण में शामिल हैं:पॉलीफोनिक सी # विधियों द्वारा अलग किया गया है?

उदाहरण: एक साधारण बफर

यहाँ एक पॉलीफोनिक सी # वर्ग का सरलतम दिलचस्प उदाहरण है:

public class Buffer { 
    public String get() & public async put(String s) { 
     return s;  
    } 
} 

मुझे यह बिल्कुल नहीं मिला।
विधियों get() और put() के बीच क्या संकेत करता है?

+1

@ एमी: मुझे लगता है कि ओपी ने दोनों भाषाओं को मिश्रित किया है, शायद कई अन्य लोगों की तरह। तो अगर मैं भ्रामक है तो भी मैं सी # टैग रखूंगा। सिर्फ इसलिए कि यह सवाल इस गलतफहमी को हल कर सकता है। –

+0

@TimSchmelter सहमत, मैंने इसे नियमित सी # के रूप में पढ़ा, इस प्रकार मेरा भ्रम, सी # टैग –

उत्तर

6

यह कानूनी सी # नहीं है। वह पॉलीफोनिक सी # है। यह research project from Microsoft है। यह शर्म की बात है यह ठीक से परिभाषित नहीं कर रहा है है, लेकिन बात यह है:

में पॉलीफोनिक सी #, तथापि, एक शरीर (तुल्यकालिक और/या अतुल्यकालिक) के तरीकों में से एक सेट के साथ जुड़ा हो सकता है। हम इस तरह की परिभाषा को एक तार कहते हैं, और कई तारों के शीर्षलेख में एक विशेष विधि दिखाई दे सकती है। एक तार का शरीर केवल उसके शीर्षलेख में सभी विधियों को बुलाए जाने के बाद निष्पादित कर सकता है।

तो & उन विधियों को एक तार में "बाध्यकारी" कर रहा है जिसे तब तक लागू नहीं किया जाएगा जब तक तार में सभी विधियों का उपयोग नहीं किया जाता है।

एक छोटी सी आगे ही article में साथ:

इन दो तरीकों दिखाई शरीर जो की वापसी बयान के होते हैं एक भी तार, के शीर्षक में (एक ampersand से अलग)। अब मान लें कि bBuffer का एक उदाहरण है और निर्माता और उपभोक्ता धागे b के माध्यम से संवाद करना चाहते हैं। निर्माता put() पर कॉल करते हैं, जो कि विधि असीमित है, ब्लॉक न करें। उपभोक्ता get() पर कॉल करते हैं, जो कि विधि सिंक्रोनस है, तब तक ब्लॉक करेगा जब तक कि कोई मिलान करने वाला कॉल() नहीं है। दोनों एक put() और एक get(), शरीर रन और put() को तर्क get() करने के लिए कॉल के परिणाम के रूप में किया जाता है एक बार b प्राप्त हुआ है।get() पर एकाधिक कॉल put() से पहले लंबित हो सकते हैं, उनमें से एक को फिर से निकालने के लिए प्राप्त किया गया है और put() पर कई कॉल किए जा सकते हैं, उनके तर्कों को बाद में get() एस द्वारा खपत किया जाता है।

: लेकिन, इस तरह की बढ़त की प्रकृति है। मुझे यह मिल गया

0

यह एक तार बनाने वाले कई तरीकों को निर्दिष्ट करने के लिए सिंटैक्स है। जब तक हेडर में सभी विधियों को नहीं कहा जाता है तब तक शरीर निष्पादित नहीं होगा।

+0

को बेहतर रखता है तो यह पॉलीफोनिक सी # विशिष्ट है, नियमित सी # से नहीं? –

+3

यह सही है, यह कानूनी सी # वाक्यविन्यास –

+0

नहीं है हां, यह पॉलीफोनिक विशिष्ट है। – ClosedEyesSeeing

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

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