sub do_printf { printf @_ }
sub do_sprintf { print sprintf @_ }
do_printf("%s\n", "ok"); # prints ok
do_sprintf("%s\n", "ok"); # prints 2
उत्तर
क्या आप शायद मतलब printf के विपरीत, sprintf करते नहीं होती जब आप पारित यह आपकी पहली तर्क के रूप में एक सरणी। सरणी के बजाय प्रारूप के रूप में सरणी के 0 तत्व का उपयोग करने का अदिश संदर्भ दिया जाता है, और , पर्ल प्रारूप है, जो लगभग कभी नहीं उपयोगी है रूप सरणी में तत्वों की गिनती का प्रयोग करेंगे।
sprintf स्केलर संदर्भ में सरणी का मूल्यांकन करता है। आपके सरणी में दो तत्व हैं, इसलिए यह "2" के रूप में मूल्यांकन करता है (बिना किसी पीछे \ n)।
sprintf
प्रोटोटाइप [email protected]
जबकि printf
कारण है कि वे अलग तरीके से व्यवहार करने के लिए के रूप में व्याख्या के लिए @
+1 मेरा से बेहतर तकनीकी उत्तर :-) – crazyscot
लेकिन क्या किसी के पास कोई विचार है, क्यों? आम तौर पर ऐसी अनजान चीजों का मतलब है कि यहां कुछ डीडब्ल्यूआईएम शामिल हैं। – codeholic
कहीं से अनुमान नहीं: 'sprintf' प्रोटोटाइप' ($ @) है क्योंकि यह कर सकता है; 'printf' में कोई प्रोटोटाइप नहीं है क्योंकि (जैसे' प्रिंट') यह एक बेवकूफ फ़ाइलहेडल ले सकता है (उदाहरण के लिए 'printf FH "प्रारूप", ...' इसलिए इसे प्रोटोटाइप सिस्टम का प्रबंधन करने के लिए ऊपर और परे पार्सर जादू की आवश्यकता होती है। – hobbs
codeholic
देखें की और Mark
के जवाब के प्रोटोटाइप है है।
समाधान के लिए, बस कार्य करें:
sub do_sprintf { print sprintf(shift, @_) }
फिर,
sub do_printf { printf @_ }
sub do_sprintf { print sprintf(shift, @_) }
do_printf("%s\n", "ok"); # prints ok
do_sprintf("%s\n", "ok2"); # prints ok2
वे विभिन्न बातें करते हैं।printf
के लिए आउटपुट से एक स्ट्रीम है; sprintf
के लिए आप स्ट्रिंग का निर्माण करना चाहते हैं। यह प्रिंट कमांड के स्वरूपण (एफ) को संभालता है। printf
का मुख्य उद्देश्य उस स्ट्रीम को मुद्रित करना है जो इसे स्ट्रीम में बनाता है लेकिन एस (ट्रिंग) printf (ormat) के साथ आप केवल स्ट्रिंग को स्ट्रिंग बनाते हैं, इसे मुद्रित नहीं करते हैं।
printf
प्रतिक्रिया के रूप में स्ट्रीम में मुद्रित वर्णों की संख्या देता है। एक बार पात्रों को एक धारा में मुद्रित किया जाता है, वे प्रोग्राम की तार्किक संरचना से बाहर हो जाते हैं। इस बीच, sprintf
आपको एक स्ट्रिंग वापस करने की जरूरत है। सबसे सुविधाजनक तरीका रिटर्न वैल्यू के रूप में होता है - क्योंकि प्रोग्राम प्रोग्राम के भीतर यह लंबाई के लिए निरीक्षण किया जा सकता है, या इसमें कोई 'ई है, या जो भी आप चाहते हैं।
क्यों नहीं होना चाहिए वे अलग-अलग व्यवहार करते हैं?
- 1. जीएचसीआई और संकलित कोड अलग-अलग व्यवहार करते हैं
- 2. स्टैकपैनल के अंदर ग्रिड: ऑटो और * अजीब तरीके से क्यों व्यवहार करते हैं?
- 3. क्यों ci "और ci (, ci {.... व्यवहार करते हैं अलग तरह से?
- 4. re.finditer के बीच अलग-अलग व्यवहार और
- 5. रैप्ली और लापरवाही क्यों अलग-अलग संभालते हैं?
- 6. विशेष चरित्रों को संभालने के दौरान javac 1.6 और javac 1.7 के बीच अलग-अलग व्यवहार
- 7. युगल के लिए प्रिंटफ राउंडिंग व्यवहार
- 8. अगर कथन के लिए/कथन के विरोध में कथन के लिए अलग-अलग व्यवहार क्यों करते हैं?
- 9. टॉमकैट 6.0 और ग्रहण। सर्वर के कई उदाहरण अलग-अलग व्यवहार करते हैं
- 10. पैरा इस तरह क्यों व्यवहार करते हैं?
- 11. क्यों clang ++ अलग-अलग व्यवहार से व्यवहार करता है क्योंकि पूर्व बाद के प्रतीक प्रतीक है?
- 12. जावा में बनाए गए धागे विंडोज और लिनक्स पर अलग-अलग व्यवहार करते हैं?
- 13. एएसपी.नेट एमवीसी में मोबाइल विचार अलग-अलग सर्वरों पर अलग-अलग प्रदर्शन क्यों करते हैं?
- 14. foo (& nil) foo (और "proc नहीं") से अलग तरीके से कैसे व्यवहार करता है?
- 15. पायथन - फ़ंक्शन से अलग-अलग सरणी को अलग-अलग सरणी
- 16. रूबी अगर अलग-अलग व्यवहार करते हैं तो रेखा के बनाम अंत?
- 17. डी 3 का चयन क्यों करें() और selectAll() अलग-अलग व्यवहार कर रहे हैं?
- 18. पाइथन प्रिंट स्टेटमेंट्स जिनमें 'end =' तर्क शामिल हैं, जबकि loops में अलग-अलग व्यवहार करते हैं?
- 19. संख्यात्मक आदेश से अलग संख्यात्मक व्यवहार क्यों करता है?
- 20. सेंटोस में उबंटू में vi अलग तरीके से क्यों व्यवहार करता है?
- 21. इनपुट और चयन अलग-अलग बॉक्स मॉडल का उपयोग क्यों करते हैं?
- 22. स्प्रिंटफ के लिए क्या खड़ा है?
- 23. क्यों rails_admin मार्ग केवल LINK_TO में काम करते हैं और
- 24. कंप्यूटर एसीआई/टेक्स्ट और छवियों/रंग को अलग तरीके से कैसे संसाधित करते हैं?
- 25. सी # और वीबीएनईटी क्यों मार्शल चार * अलग-अलग क्यों करते हैं?
- 26. सी: स्प्रिंटफ और रिकर्सन
- 27. रूबी में एक ही चीज़ करने के लिए इतने सारे अलग-अलग तरीके क्यों हैं?
- 28. क्लोजर स्प्रिंटफ?
- 29. @users कैसे प्रस्तुत करते हैं और 'नया' अलग करते हैं?
- 30. मुख्य कोड से पिछली संगतता के लिए आप कोड को कैसे अलग तरीके से अलग करते हैं?
... ठीक है, स्पष्ट बताते हुए धन्यवाद, और पोस्टर के प्रश्न का उत्तर है? ... – vladr