मेरे पास निम्न कोड है:

#!/usr/bin/perl

use strict;
use feature qw(say);

my $raw_text = "a b c d e f g h";

my @array = split(/ /, $raw_text);
my $element = @array[0];

say "Element [0] of array is : ", $array[0];

यह STDOUT पर प्रिंट करता है:

Element [0] of array is : a

अब तक सब ठीक है। हालांकि अगर मैं विभाजन विधि से सीधे तत्व को पुनर्प्राप्त करना चाहता हूं, तो मैं इसके बारे में सोचूंगा:

my $element = split(/ /, $raw_text)[0];

लेकिन यह पता चला है कि यह एक संकलन त्रुटि फेंकता है। कुछ शोध करने के बाद मुझे लगा कि मुझे टाइप करना है:

my $element = ( split(/ /, $raw_text) )[0];

प्रश्न यह है: अतिरिक्त कोष्ठक क्यों आवश्यक हैं?

मैं इस मामले के लिए कोष्ठक अर्थ को गलत समझ सकता हूं।

0
ppinto 19 अप्रैल 2018, 12:34

1 उत्तर

सबसे बढ़िया उत्तर

सिंटैक्स त्रुटि आपको अभिव्यक्ति को स्पष्ट करने के लिए मजबूर करने के लिए है, जिसे या तो व्याख्या किया जा सकता है

split((/ /, $raw_text)[0])

या

(split(/ /, $raw_text))[0]

सामान्य तौर पर, पर्ल अस्पष्ट कोड के इरादे से "सर्वश्रेष्ठ अनुमान" लगाएगा, लेकिन इस मामले में डिजाइनरों ने फैसला किया कि "सबसे अधिक संभावना" व्याख्या पर निर्णय लेने का कोई वास्तविक तरीका नहीं था, और इसलिए निर्माण विफल हो गया संकलन लेखक को कोड को स्पष्ट करने के लिए मजबूर करने के लिए

ध्यान दें कि आंतरिक कोष्ठक अनावश्यक हैं, और व्यंजक को इस प्रकार लिखा जा सकता है

(split / /, $raw_text)[0]
3
Borodin 19 अप्रैल 2018, 14:06