अंकों के संबंध में

छवि
पर्ल में कई ऑपरेटर हैं जिनमें केवल डॉट्स होते हैं। ऐसे कितने ऑपरेटर आप नाम रख सकते हैं?

उनमें से पांच हैं। आमतौर पर, पर्ल प्रोग्रामर दो या तीन का नाम दे सकते हैं।

आइए उन्हें क्रम में देखें।

एक बिंदु।



हर कोई ऑपरेटर को एक बिंदु से जानता है। यह सुरीलापन है, तार का संयोजन है। अधिक सटीक रूप से, यह उनके बाद के संयोजन के साथ तार के लिए दोनों ऑपरेंड का रूपांतरण है।

my $string = 'one string' . 'another string'; # $string  'one stringanother string' 


कभी-कभी यह एक स्केलर संदर्भ में परिणाम को वापस करने के लिए किसी एक ऑपरेंड को मजबूर करने के लिए उपयोगी होता है।

 say "Time: ", localtime; #    say "Time: " . localtime; #         


कोड की दो लाइनों के बीच थोड़ा अंतर, लेकिन आउटपुट में क्या बड़ा अंतर है।

एक बिंदु समाप्त होने के साथ।

दो अंक



दो अंकों के साथ पहले से ही अधिक दिलचस्प है। वास्तव में, दो बिंदु दो अलग-अलग ऑपरेटर हैं। निर्भर करता है कि आप उनका उपयोग कैसे करते हैं।

अधिकांश एक ऑपरेटर के रूप में ".." ऑपरेटर से परिचित हैं जो किसी भी अंतराल से मूल्यों की एक सरणी का उत्पादन करता है।

 my @numbers = (1 .. 100); my @letters = ('a' .. 'z'); 


लूप में उपयोग करना भी सुविधाजनक है।

 do_something() for 1 .. 30000; 


पर्ल के पुराने संस्करणों में, इसके लिए एक अस्थायी सरणी बनाई गई थी, इसलिए इस तरह के लूप एक बड़ा भार पैदा कर सकते थे। अब ऐसी कोई समस्या नहीं है।

तो, सूचियों के संदर्भ में, दो बिंदु रेंज ऑपरेटर हैं। लेकिन स्केलर में - यह एक स्विच स्टेटमेंट (फ्लिप-फ्लॉप) है। इसे इसलिए कहा जाता है क्योंकि यह दो मूल्यों के बीच बदल जाता है, गलत और सत्य। यह झूठ के साथ शुरू होता है, अगले स्विच पर यह सच में बदल जाता है, फिर फिर से झूठ होता है, आदि।

किसी ऑपरेटर की स्थिति को बदलने के लिए उसके ऑपरेंड की गणना करके बुलाया जाता है। एक उदाहरण है।
मान लें कि हम फ़ॉर्म की एक टेक्स्ट फ़ाइल संसाधित कर रहे हैं:

स्टार्ट
यहाँ पाठ है
यहाँ पाठ
अंत
अनावश्यक पाठ
कचरा
स्टार्ट
फिर से वांछित पाठ
यहाँ पाठ
अंत

हमें जिस पाठ की आवश्यकता है वह START और END के बीच है, और शेष कचरा है।

प्रसंस्करण की स्कूल विधि आमतौर पर इस प्रकार है:

 my $process_this = 0; while (<$file>) { $process_this = 1 if /START/; $process_this = 0 if /END/; process_this_line($_) if $process_this; } 


".." ऑपरेटर का उपयोग करते समय, एक ही प्रोग्राम इस तरह दिखता है:

 while (<$file>) { process_this_line($_) if /START/ .. /END/; } 


स्विच कथन तब तक गलत होता है जब तक कि बाएं ऑपरेंड (/ START /) सही नहीं होता। तब स्विच सही पर स्विच करता है, और इसे तब तक लौटाता है जब तक सही ऑपरेंड (/ END /) सही नहीं हो जाता। फिर यह झूठे पर स्विच करता है, और लूप दोहराता है।

एक और तरकीब। मान लें कि हमें फ़ाइल की केवल 20 वीं से 40 वीं पंक्तियों पर प्रक्रिया करने की आवश्यकता है। अंतिम खोली गई फ़ाइल से पढ़ी गई वर्तमान पंक्ति संख्या विशेष चर $ में निहित है।
यदि स्विच ऑपरेंड स्थिरांक हैं, तो यह उनकी तुलना $ की सामग्री के साथ करता है। और जब रेखा संख्या मेल खाती है तो स्विच करती है। इसलिए, फ़ाइल की 20 से 40 लाइनों से प्रसंस्करण बहुत सरल है:

 while (<$file>) { process_this_line($_) if 20 .. 40; } 


तीन अंक



तीन-बिंदु ऑपरेटर को यदा-यदा (शायद रूसी में "ब्ला ब्ला") कहा जाता है, और इसे पर्ल 5.12 में जोड़ा गया था
कड़ाई से बोलते हुए, यह शायद भाषा का एक निर्देश है, ऑपरेटर नहीं, क्योंकि इसमें ऑपरेंड नहीं है।
यह कोड को बदलने का इरादा है जो अभी तक नहीं लिखा गया है।

 sub reverse_polarity { # TODO:     ... } 


प्रोग्रामर लंबे समय से कोड में ऐसे निशान बना रहे हैं। और परंपरागत रूप से, दीर्घवृत्त का अर्थ है, जो अभी तक नहीं लिखा गया है। लेकिन अब इन तीन बिंदुओं को वास्तव में कोड में दर्ज किया जा सकता है, और यह संकलन और काम करेगा।
मुद्दा यह है कि यदि आप केवल एक खाली फ़ंक्शन छोड़ते हैं, तो यह चुपचाप निष्पादित करेगा और कुछ भी नहीं लौटाएगा। और कोड में एक दीर्घवृत्त एक विशेष चेतावनी जारी करने के लिए पर्ल का कारण होगा "_file_ लाइन ## पर लागू"। ऐसा स्मरण।

लेकिन वास्तव में, प्राचीन काल से पर्ल में एक दीर्घवृत्त के रूप में एक और ऑपरेटर है। यह फ्लिप-फ्लॉप स्विच स्टेटमेंट का एक और संस्करण है।

एक दो-बिंदु स्विच ऑपरेटर पहले बाएं ऑपरेंड के मूल्य की गणना करता है, यदि सही है, तो यह स्विच करता है, और फिर तुरंत सही के मूल्य की गणना करता है। और अगर यह भी सच है, यह तुरंत वापस स्विच करता है। तीन बिंदुओं का ऑपरेटर तुरंत सही ऑपरेंड के मूल्य की जांच नहीं करता है, इस प्रकार कम से कम एक निष्पादन की गारंटी देता है।

बेशक, यह एक अनावश्यक जटिलता की तरह लगता है, लेकिन शायद कुछ मामलों में यह व्यवहार काम आ सकता है। लेकिन इस तथ्य को देखते हुए कि तीन-बिंदु फ्लिप-फ्लॉप ऑपरेटर के बारे में बहुत कम लोग जानते हैं, इसकी बहुत कम जरूरत है।

तो, यहां वे 5 ऑपरेटर हैं: कॉनटेनैशन, रेंज, फ्लिप-फ्लॉप, ब्ला ब्ला और दूसरा फ्लिप-फ्लॉप।

Source: https://habr.com/ru/post/In209898/


All Articles