दुर्भाग्य से, किसी मशीन को ठीक से ऊपर चढ़ना / नीचे जाना / रोकना असंभव है। कंप्यूटर को समझने के लिए बहुत अधिक प्रासंगिक जानकारी की आवश्यकता है।
यही कारण है कि रूबी की Stringकक्षा केवल ASCII वर्णों के लिए पूंजीकरण का समर्थन करती है, क्योंकि वहां यह कम से कम कुछ अच्छी तरह से परिभाषित है।
मुझे "संदर्भ संबंधी जानकारी" से क्या मतलब है?
उदाहरण के लिए, iठीक से कैपिटल करने के लिए, आपको यह जानना होगा कि टेक्स्ट किस भाषा में है। उदाहरण के लिए, अंग्रेज़ी में केवल दो is हैं: Iएक डॉट के बिना कैपिटल और iएक डॉट के साथ छोटा । लेकिन तुर्की के पास चार iएस हैं: Iएक डॉट के बिना पूंजी İ, एक डॉट के साथ पूंजी , एक डॉट के ıबिना छोटी i, एक डॉट के साथ छोटी । तो, अंग्रेजी में 'i'.upcase # => 'I'और तुर्की में 'i'.upcase # => 'İ'। दूसरे शब्दों में: चूंकि 'i'.upcaseभाषा के आधार पर, दो अलग-अलग परिणाम वापस आ सकते हैं, इसलिए किसी शब्द को उसकी भाषा को जाने बिना उसे सही ढंग से कैपिटल करना स्पष्ट रूप से असंभव है।
लेकिन रूबी भाषा नहीं जानती, यह केवल एन्कोडिंग को जानती है। इसलिए रूबी की अंतर्निहित कार्यक्षमता के साथ एक स्ट्रिंग को ठीक से कैपिटल करना असंभव है।
यह बदतर हो जाता है: भाषा जानने के साथ भी, कभी-कभी पूंजीकरण ठीक से करना असंभव है। उदाहरण के लिए, जर्मन में, 'Maße'.upcase # => 'MASSE'( Maße Ma measurement का अर्थ बहुवचन माप है )। हालाँकि, 'Masse'.upcase # => 'MASSE'(मतलब द्रव्यमान )। तो, क्या है 'MASSE'.capitalize? दूसरे शब्दों में: सही ढंग से पूंजीकरण के लिए एक पूर्ण विकसित आर्टिफिशियल इंटेलिजेंस की आवश्यकता होती है।
तो, बजाय कभी कभी गलत जवाब देने के लिए, कभी कभी करने के लिए रूबी चुनता कोई जवाब नहीं देना बिल्कुल भी है, जिसके कारण गैर- ASCII वर्ण बस downcase / upcase / संचालन भुनाने में नजरअंदाज कर दिया जाता है। (जो बेशक गलत परिणाम भी पढ़ता है, लेकिन कम से कम यह जांचना आसान है।)