हर कोई जानता है कि, कम से कम सी में, आप printf
एक स्वरूपित स्ट्रिंग को प्रिंट करने के लिए फ़ंक्शन के परिवार का उपयोग करते हैं । और ये फ़ंक्शंस एक प्रारूप चिह्न%
की शुरुआत को इंगित करने के लिए प्रतिशत चिह्न ( ) का उपयोग करते हैं । उदाहरण के लिए, %d
प्रिंट करने का मतलब है int
, और %u
प्रिंट करने का मतलब है unsigned int
। यदि आप इस बात से अपरिचित हैं कि printf
फ़ंक्शन और प्रारूप प्लेसहोल्डर कैसे काम करते हैं, या बस एक रिफ्रेशर की आवश्यकता है, विकिपीडिया लेख शुरू करने के लिए एक अच्छी जगह है।
मेरा सवाल यह है कि क्या कोई विशेष रूप से सम्मोहक कारण है कि यह मूल रूप से या भविष्य में प्रारूप विनिर्देशक के रूप में क्यों चुना जाना चाहिए?
स्पष्ट रूप से निर्णय बहुत समय पहले किया गया था (सी भाषा के एक पूर्ववर्ती के लिए बहुत संभावना है), और यह तब से अधिक या कम "मानक" है (न केवल सी में, बल्कि अन्य भाषाओं के एक विशाल सरणी में भी है) अलग-अलग डिग्री के लिए इसके सिंटैक्स को अपनाया है), इसलिए इसे कभी भी बदलने में बहुत देर हो चुकी है। लेकिन मैं अब भी उत्सुक हूं कि अगर किसी को इस बात की कोई जानकारी है कि यह विकल्प पहली बार में क्यों बनाया गया है, और क्या यह अभी भी पसंद के रूप में समझ में आता है अगर कोई समान कार्यक्षमता के साथ एक नई भाषा डिजाइन कर रहा है।
उदाहरण के लिए, C # (और .NET भाषाओं के अन्य परिवार) के साथ, Microsoft ने स्ट्रिंग स्वरूपण कार्यों के संचालन के बारे में थोड़ा अलग निर्णय लिया। यद्यपि कुछ प्रकार की सुरक्षा वहां लागू की जा सकती है ( printf
सी के कार्यान्वयन के साथ) के विपरीत , और इसलिए यह संबंधित पैरामीटर के प्रकार के एक संकेत को शामिल करने के लिए अनावश्यक है, उन्होंने घुंघराले ब्रेस के शून्य-अनुक्रमित जोड़े का उपयोग करने का फैसला किया ( {}
) प्रारूप विनिर्देशक के रूप में, जैसे:
string output = String.Format("In {0}, the temperature is {1} degrees Celsius.",
"Texas", 37);
Console.WriteLine(output);
// Output:
// In Texas, the temperature is 37 degrees Celsius.
String.Format
विधि के लिए प्रलेखन में अधिक जानकारी शामिल है, जैसा कि सामान्य रूप से समग्र स्वरूपण पर यह लेख करता है , लेकिन सटीक विवरण महत्वहीन हैं। मुद्दा बस इतना है कि उन्होंने %
प्रारूप विनिर्देशक की शुरुआत का संकेत देने के लिए लंबे समय से चली आ रही प्रथा को त्याग दिया । सी भाषा बस आसानी से इस्तेमाल किया जा सकता है {d}
और {u}
, लेकिन यह नहीं था। किसी के पास कोई विचार क्यों है, क्या यह निर्णय पूर्वव्यापी में समझ में आता है, और क्या नए कार्यान्वयन को इसका पालन करना चाहिए?
जाहिर है कि ऐसा कोई भी चरित्र नहीं है जिसे चुना जा सकता है, इसलिए उसे बचाना नहीं होगा, ताकि इसे स्ट्रिंग में ही शामिल किया जा सके, लेकिन उनमें से केवल दो का उपयोग करके यह समस्या पहले से ही काफी हद तक सुलझ गई है। क्या अन्य विचार प्रासंगिक हैं?
{u}
बजाय इसका उपयोग करना संभव %u
होगा लेकिन क्या इसका कोई महत्वपूर्ण लाभ होगा? यह काफी हद तक मनमानी पसंद है।
{}
सिंटैक्स चुना है ताकि C # सीखने वाले लोग कुछ और सीखना शुरू न करें? मुझे यह विश्वास करना बहुत मुश्किल है कि एक प्रमुख था, अगर कोई भी, उनके डिजाइन निर्णय का हिस्सा। क्या आप किसी तरह अपने बयान का बैकअप ले सकते हैं?
%
स्वरूपण के पक्ष में नेट के लिए समान कुछ {}
स्वरूपण क्योंकि बाद प्रदान करता है और अधिक लचीलापन।