দুর্ভাগ্যক্রমে, কোনও মেশিনের পক্ষে সঠিকভাবে আপস / ডাউনচেস / মূলধন তৈরি করা অসম্ভব। কম্পিউটারটি বুঝতে এটির জন্য অনেক বেশি প্রাসঙ্গিক তথ্য প্রয়োজন।
সে কারণেই রুবির Stringশ্রেণি কেবলমাত্র ASCII অক্ষরের জন্য মূলধনকে সমর্থন করে, কারণ সেখানে এটি অন্তত কিছুটা সংজ্ঞায়িত।
"প্রাসঙ্গিক তথ্য" বলতে আমি কী বুঝি?
উদাহরণস্বরূপ, iসঠিকভাবে মূলধন তৈরি করতে, আপনার পাঠ্যটি কোন ভাষায় রয়েছে তা জানতে হবে English উদাহরণস্বরূপ, ইংরেজী, মাত্র দুটি iগুলি: Iবিন্দু ছাড়াই এবং ছোট iবিন্দুর সাথে ছোট capital তবে তুরস্কের চারটি রয়েছে i: Iবিন্দু ছাড়াই মূলধন , বিন্দুর İসাথে মূলধন , ıবিন্দুর iসাথে ছোট, বিন্দুর সাথে ছোট । সুতরাং, ইংরেজি 'i'.upcase # => 'I'এবং তুর্কি ভাষায় 'i'.upcase # => 'İ'। অন্য কথায়: যেহেতু 'i'.upcaseভাষার উপর নির্ভর করে দুটি ভিন্ন ফলাফল প্রত্যাবর্তন করতে পারে, তাই কোনও শব্দটির ভাষা না জেনে সঠিকভাবে মূলধন করা অসম্ভব।
তবে রুবি ভাষা জানেন না, এটি কেবল এনকোডিং জানেন knows সুতরাং রুবির অন্তর্নির্মিত কার্যকারিতা সহ একটি স্ট্রিং সঠিকভাবে মূলধন করা অসম্ভব।
এটা তোলে খারাপ: এমনকি সঙ্গে ভাষা বুদ্ধিমান, এটা মূলধন সঠিকভাবে কখনও কখনও অসম্ভব। উদাহরণস্বরূপ, জার্মান ভাষায়, 'Maße'.upcase # => 'MASSE'( সার্বজনীনভাবে এর বহুবচন ভর অর্থ পরিমাপ )। তবে, 'Masse'.upcase # => 'MASSE'(মানে ভর )। তো, কী 'MASSE'.capitalize? অন্য কথায়: সঠিকভাবে মূলধন করার জন্য একটি পূর্ণ বর্ধিত কৃত্রিম বুদ্ধি প্রয়োজন requires
সুতরাং, পরিবর্তে কখনও কখনও ভুল উত্তর দেবার, মাঝে মাঝে রুবি তা চয়ন কোন উত্তর দিতে এ সব , যার কারণে নন- ASCII অক্ষর কেবল downcase / upcase / অপারেশন পুঁজিতে উপেক্ষা দেখায়। (অবশ্যই কোনটি ভুল ফলাফলও পড়ে, তবে অন্তত এটি পরীক্ষা করা সহজ))