मैं सोच रहा था कि File
लाइब्रेरी लिखने वाले लोगों ने तर्क देने का फैसला किया कि यह निर्धारित करता है कि प्रतीक के बजाय तारों में फ़ाइल किस प्रकार खोला गया है।स्ट्रिंग के बजाय फ़ाइल.न्यू प्रतीकों के तर्क क्यों नहीं हैं?
उदाहरण के लिए, यह है कि यह कैसे है:
f = File.new('file', 'rw')
लेकिन यह करने के लिए एक बेहतर डिजाइन नहीं होगा
f = File.new('file', :rw)
या यहाँ तक कि
f = File.new(:file, :rw)
उदाहरण के लिए
? यह उनका उपयोग करने के लिए एक आदर्श स्थान प्रतीत होता है क्योंकि तर्क निश्चित रूप से उत्परिवर्तनीय होने की आवश्यकता नहीं है।
मुझे यह जानने में दिलचस्पी है कि यह इस तरह से क्यों आया।
अद्यतन: मैंने अभी a related question about symbols vs. strings पढ़ा है, और मुझे लगता है कि सर्वसम्मति यह थी कि प्रतीकों को स्ट्रिंग के रूप में भी जाना जाता है, और हर किसी को किसी भी तरह से इंडेक्स हैश टेबल पर तारों का उपयोग करने के लिए उपयोग किया जाता है। हालांकि, मुझे नहीं लगता कि यह रूबी के मानक पुस्तकालय के डिजाइनरों के लिए प्रतीकों के विषय पर अज्ञानता की मांग करने के लिए मान्य होगा, इसलिए मुझे नहीं लगता कि यही कारण है।
शायद यह सिर्फ एक ऐतिहासिक आर्टिफैक्ट है जो libc में 'fopen' पर वापस जा रहा है। –
क्या आप सुझाव दे रहे हैं कि 'अनन्य' मोड ('r',' w', '+', 'a',' b', 't') के प्रत्येक मान्य क्रमपरिवर्तन के लिए एक अद्वितीय प्रतीक परिभाषित किया गया हो? – Gabe
महान सवाल। 'फाइल :: आरडीडब्ल्यूआर' और 'फाइल :: CREAT' जैसे स्थिरांक हैं जिनका आप उपयोग कर सकते हैं, लेकिन मुझे इसके बारे में दस्तावेज़ीकरण नहीं मिल रहा है। 'फ़ाइल' [प्रलेखन] (http://www.ruby-doc.org/core/classes/File.html) इन स्थिरांक का उपयोग करता है, लेकिन उन्हें समझा नहींता है। – rdvdijk