2011-08-16 10 views
12

क्या पर्ल में एक लाइन foreach पाश का उपयोग करना संभव है?क्या एक लाइन में पर्ल फोरैच लूप लिखना संभव है?

$hash{$thing}++ foreach my $thing (@things); 

मैं जानता हूँ कि इस तरह के रूप में कई अन्य आदेशों के साथ संभव है,

die "Invalid file!\n" if (open($Handle, "file.txt")); 

मुझे पता है कि खुले बयान शायद टूट :)

+0

@Zaid: "इनलाइन लूप"? शायद यह सिर्फ मुझे है, लेकिन मैंने पिछले शीर्षक को और वर्णनात्मक पाया ...:/ – musiKk

+0

@musiKk: संशोधित। – Zaid

+0

अपने दूसरे कथन पर: 'if' से 'जब तक' बदलें या अधिक सामान्य मुहावरे (और 3arg खुला और लेक्सिकल हैंडल) का उपयोग करें 'मेरा $ हैंडल खोलें,' <',' file.txt 'या मरें" फ़ाइल खोलने में त्रुटि: $! "; 'निश्चित रूप से' '' '' 'का उपयोग करें, यदि आप पढ़ने के बजाए लिखने के लिए फ़ाइल खोलना चाहते हैं। ब्रेवटी और 'के लिए –

उत्तर

29

लगभग। foreach प्रत्यय में, आप $ का उपयोग करना चाहिए _:

$hash{$_}++ foreach @things; 

या समतुल्य (for और foreach के बाद से वाक्य रचना के लिए एलियास की गई हैं):

$hash{$_}++ for @things; 
+1

+1। –

+0

मैंने अभी देखा है कि पोस्ट करने के बाद, लेकिन शीघ्र उत्तर के लिए धन्यवाद। मुझे एहसास हुआ कि एक ही कथन में नाम वैरिएबल थोड़ा अधिक है। –

+0

क्या आप इंगित कर सकते हैं, कृपया, जहां यह वाक्यविन्यास दस्तावेज है? पर्ल्सिन पेज का उल्लेख नहीं है। – user907860

3

आप कर सकते हैं:

foreach my $thing (@things) {$hash{$thing}++}; 

अगर आप इसे एक रेखा पर एक लेक्सिकली-स्कोप्ड वैरिएबल के साथ चाहते हैं। आप foreach को उलटा नहीं कर सकते हैं और लूप-स्कोप्ड चर रख सकते हैं।

+5

आपने लिखा "आप 'foreach' को उलटा नहीं कर सकते हैं और लूप-स्कोप्ड चर रख सकते हैं।" उस नाम से नहीं, नहीं, लेकिन क्या? एक लाइन 'foreach' को नामित topicalizer की आवश्यकता नहीं है। @ चीज के लिए $ हैश {$ _} ++ कहता है हैश ** यह ** प्रत्येक चीज़ के लिए ** या अधिक अंग्रेजी में हैश ** ** ** ** है। याद रखें कि '$ _' को" इसे "के रूप में पढ़ना चाहिए। और "यह" एक लूप-स्कोप्ड चर होने के लिए * गारंटी * है। इसके अलावा यह एक नया निजी वैरिएबल वैरिएबल होगा जो लूप ** आईएफएफ ** के लिए स्पष्ट रूप से स्कॉप्ड किया गया है यदि उस नाम से एक मौजूदा शब्दावली (पढ़ा गया: '$ _') पहले से ही दायरे में था, और गतिशील रूप से अन्यथा स्कॉप्ड किया गया था। यह अभी भी लूप-स्कोप्ड किसी भी तरह से है। – tchrist

संबंधित मुद्दे