Swift: print() vs println() vs NSLog() — क्या चुनें और क्यों यह महत्वपूर्ण है?
\n\nSwift सीखना शुरू करने वाला हर कोई कभी न कभी कंसोल में डेटा आउटपुट करने की समस्या से जूझता है। सोचिए, इसमें मुश्किल क्या हो सकती है? लेकिन यहाँ confusion पैदा होती है: print(), println() और NSLog() — इनमें क्या अंतर है? जब एक ही तरीका काफी है तो तीन क्यों? इस लेख में हम हर चीज़ को स्पष्ट रूप से समझाएंगे, उदाहरणों के साथ दिखाएंगे और आपको इन functions में कभी confusion नहीं होने देंगे।
यह विषय Stack Overflow के एक बहुत लोकप्रिय प्रश्न पर आधारित है, जिसे हज़ारों बार देखा गया है। हमने इसे शैक्षिक सामग्री के रूप में ढाला है ताकि आप केवल रटें नहीं, बल्कि Swift की logic को समझ सकें।
\n\n\n\n
संक्षिप्त इतिहास: Objective-C से आधुनिक Swift तक
\n\nअंतर समझने के लिए थोड़ा इतिहास में जाना ज़रूरी है। Swift एक युवा भाषा है (2014 में आई), लेकिन इसे Objective-C के उत्तराधिकारी के रूप में बनाया गया था। इसलिए इसमें Swift के 'अपने' functions और Apple की दुनिया से आए पुराने functions दोनों शांतिपूर्वक साथ रहते हैं।
\n\n- \n
println()— Swift के शुरुआती संस्करणों (2.0 से पहले) का अवशेष है। आज यह पूरी तरह हटा दिया गया है। \n print()—println()का आधुनिक विकल्प, जो Swift 2.0 में आया। \n NSLog()— Objective-C की दुनिया का function, जो आज भी डिबगिंग के लिए सक्रिय रूप से उपयोग होता है। \n
अगर आप आधुनिक Swift (संस्करण 4.x और उससे ऊपर) में लिख रहे हैं, तो println() आपको नहीं मिलेगा — compiler error दे देगा। लेकिन पुराने ट्यूटोरियल्स और फ़ोरम में यह अब भी दिखता है, इसलिए यह समझना ज़रूरी है कि यह क्या था और इसकी जगह क्या आया।
\n\n
print() — आउटपुट के लिए मुख्य उपकरण
\n\nprint() कैसे काम करता है?
\n\nSwift 2.0 से, print() कंसोल में डेटा आउटपुट करने का मानक तरीका बन गया। यह लचीला, सरल और पूरी तरह नियंत्रणीय है।
let name = "अन्ना"\nlet age = 25\n\nprint("नमस्ते, \\(name)! तुम \\(age) साल के हो।")\n// आउटपुट: नमस्ते, अन्ना! तुम 25 साल के हो।\n\nपुराने println() से मुख्य अंतर यह है कि print() अपने आप नई लाइन का symbol नहीं जोड़ता। असल में, यह जोड़ता है, लेकिन आप इसे terminator पैरामीटर से नियंत्रित कर सकते हैं।
// सामान्य आउटपुट\nprint("पहली पंक्ति")\nprint("दूसरी पंक्ति")\n// आउटपुट:\n// पहली पंक्ति\n// दूसरी पंक्ति\n\n// बिना नई लाइन के आउटपुट\nprint("पहली पंक्ति", terminator: "")\nprint("दूसरी पंक्ति", terminator: "")\n// आउटपुट: पहली पंक्तिदूसरी पंक्ति\n\nprint() के पैरामीटर
\n\n- \n
items— जो आप आउटपुट कर रहे हैं (कॉमा से अलग किए गए कई मान हो सकते हैं)। \n separator— तत्वों के बीच का विभाजक (डिफ़ॉल्ट रूप से space)। \n terminator— पंक्ति के अंत में क्या रखा जाए (डिफ़ॉल्ट\\n— नई लाइन)। \n
print(1, 2, 3, separator: "-", terminator: "!")\n// आउटपुट: 1-2-3!\n\nकब उपयोग करें: सामान्य डेटा आउटपुट, सरल ऐप्स में लॉगिंग, शैक्षिक उदाहरणों के लिए।
\n\n\n\n
println() — अतीत से आया मेहमान
\n\nअगर आपको किसी पुराने कोड में println() मिले, तो जान लें कि यह Swift के शुरुआती संस्करणों का print() का एनालॉग है। एकमात्र अंतर: println() हमेशा अंत में नई लाइन का symbol जोड़ता था, और इसमें terminator पैरामीटर नहीं था।
// Swift 1.x पर पुराना कोड\nlet x = 10\nprintln("x का मान = \\(x)")\n// आउटपुट: x का मान = 10 (नई लाइन के साथ)\n\nSwift के आधुनिक संस्करणों (2.0 से शुरू) में println() अब मौजूद नहीं है। अगर आप इसे उपयोग करने की कोशिश करेंगे, तो compilation error मिलेगा। बस इसे print() से बदल दें — और सब काम करेगा।