2016-10-23 14 views
21

std::io::copy क्यों आवश्यक है कि पाठक और लेखक तर्क दोनों को परिवर्तनीय संदर्भों के रूप में पारित करने की आवश्यकता है?आईओ :: प्रतिलिपि को पाठक और लेखक दोनों को उत्परिवर्तनीय संदर्भों की आवश्यकता क्यों होती है?

मैं समझ सकता हूं कि लेखक को इसके आंतरिक स्थिति को बदलने के लिए लिखे गए डेटा को समायोजित करने के लिए क्यों उत्परिवर्तित होना चाहिए।

हालांकि, पाठक को एक परिवर्तनीय संदर्भ के रूप में क्यों फ़्लैग किया जाना चाहिए? अगर मैं केवल डेटा पढ़ रहा हूं, तो क्या मुझे किसी दिए गए प्रकार के संदर्भ की आवश्यकता नहीं होगी, न कि एक परिवर्तनीय संदर्भ?

उत्तर

29

क्योंकि Read प्रकार सामान्य रूप से एक-शॉट होते हैं: इसे पढ़ने से, इसे उत्परिवर्तित कर रहे हैं।

मानक इनपुट पर विचार करें: आप केवल एक बार से पढ़ सकते हैं, इसलिए कुछ बदलना चाहिए। जब आप किसी सॉकेट से पढ़ते हैं, तो आप लगभग एक आंतरिक बफर को म्यूट कर रहे हैं जो आपके द्वारा प्राप्त नेटवर्क पैकेट के बीच अंतर के लिए उपयोग किया जाता है, और किसी भी पल में आप कितना डेटा पढ़ना चाहते हैं। Chain से पढ़ने के बारे में, जिसका उपयोग पठनीय चीज़ों को एकसाथ जोड़ने के लिए किया जाता है; उत्परिवर्तन के बिना, यह ट्रैक नहीं रख सकता कि इसे किससे पढ़ना है।

ज़रूर, यह संभव एक Read प्रकार है कि परिवर्तनशील पहुँच की जरूरत नहीं है पढ़ने के लिए प्रदर्शन करने के लिए है, लेकिन वह सार्वभौमिक सच नहीं है, और क्योंकि यह सार्वभौमिक सच नहीं है, Read विशेषता परिवर्तनशील पहुँच मांग करती है।

+0

यह वास्तव में एक स्पॉट-ऑन क्रिस्टल स्पष्ट स्पष्टीकरण है। धन्यवाद! –

+5

यहां तक ​​कि 'फ़ाइल' पर भी, आप वर्तमान रीड ऑफ़सेट अपडेट कर रहे हैं। –

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