perl - Returning value from foreach in subroutines -


सरल उदाहरण का पालन करें:

  # ! Perl -w का उपयोग सख्त; उप अधिकतम {my ($ a, $ b) = @_; अगर ($ a & gt; $ b) {$ a} और {$ b}} कुल कुल {my $ sum = 0; विदेशी मुद्रा (@_) {$ sum + = $ _; } # $ Sum; # जानबूझकर टिप्पणी की} प्रिंट अधिकतम (1, 5)। "\ N"; # रिटर्न 5 प्रिंट कुल (qw {1 3 5 7 9}) "\ N";   

के अनुसार (पृष्ठ 66):

एक ???? अंतिम मूल्यांकन अभिव्यक्ति ???? वास्तव में अंतिम अभिव्यक्ति का मतलब है कि पर्ल मूल्यांकन करता है, उपनगरीय इलाके में अंतिम वक्तव्य के बजाय।

क्या कोई मुझे समझा सकता है क्यों कुल doesn वापस 25 सीधे foreach से (जैसे if ) की तरह नहीं है? मैंने अतिरिक्त $ sum को जोड़ दिया है:

  foreach (@_) {$ sum + = $ _; $ राशि; }   

और मेरे पास ऐसा चेतावनी संदेश है:

शून्य संदर्भ में निजी वैरिएबल का बेकार उपयोग ... < P> हालांकि वापसी का स्पष्ट उपयोग अपेक्षा के अनुरूप काम करता है:

  foreach (@_) {return sum = = $ _; # रिटर्न 1}    

से:

यदि कोई रिटर्न नहीं मिला है और यदि अंतिम वक्तव्य एक अभिव्यक्ति है, तो उसका मान वापस आ गया है। यदि अंतिम वक्तव्य एक लूप नियंत्रण संरचना है जैसे किसी अग्रक या थोड़ी देर, तो लौटा हुआ मूल्य अनिर्दिष्ट है।

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

ruby on rails - Convert a Activerecord result with has_one associations into a single hash per record -

javascript - Read complete data from stream from onMessage -