perl - स्केलर बनाम सूची असाइनमेंट ऑपरेटर



assignment-operator (1)

कृपया निम्नलिखित स्निपेट्स को समझने में मेरी मदद करें:

  • my $count = @array;
  • my @copy = @array;
  • my ($first) = @array;
  • (my $copy = $str) =~ s/\\/\\\\/g;
  • my ($x) = f() or die;
  • my $count = () = f();
  • print($x = $y);
  • print(@x = @y);

प्रतीक = दो असाइनमेंट ऑपरेटरों में से एक में संकलित किया गया है:

  • एक सूची असाइनमेंट ऑपरेटर का उपयोग किया जाता है यदि बाईं ओर = (LHS) a = किसी प्रकार का समुच्चय है।
  • एक स्केलर असाइनमेंट ऑपरेटर अन्यथा उपयोग किया जाता है।

निम्नलिखित को समुच्चय माना जाता है:

  • कोष्ठक में कोई भी अभिव्यक्ति (उदाहरण के लिए (...) )
  • एक सरणी (उदा @array )
  • एक सरणी टुकड़ा (जैसे @array[...] )
  • एक हैश (जैसे %hash )
  • हैश स्लाइस (उदा @hash{...} )
  • उपरोक्त में से कोई भी my , our या local द्वारा पूर्ववर्ती है

ऑपरेटरों के बीच दो अंतर हैं।

संचालन के संदर्भ में

दो ऑपरेटर उस संदर्भ में भिन्न होते हैं जिसमें उनके ऑपरेंड का मूल्यांकन किया जाता है।

  • स्केलर असाइनमेंट स्केलर संदर्भ में अपने दोनों ऑपरेंड का मूल्यांकन करता है।

    # @array evaluated in scalar context.
    my $count = @array;
  • सूची असाइनमेंट सूची संदर्भ में इसके दोनों ऑपरेंड का मूल्यांकन करता है।

    # @array evaluated in list context.
    my @copy = @array;

    # @array evaluated in list context.
    my ($first) = @array;

मान

वे जो भी लौटाते हैं उसमें दोनों ऑपरेटर अलग-अलग होते हैं।

  • स्केलर असाइनमेंट ...

    • ... स्केलर के संदर्भ में एक Lvalue के रूप में अपने LHS का मूल्यांकन करता है।

      # The s/// operates on $copy.
      (my $copy = $str) =~ s/\\/\\\\/g;
    • ... सूची के संदर्भ में एक Lvalue के रूप में अपने LHS का मूल्यांकन करता है।

      # Prints $x.
      print($x = $y);
  • सूची असाइनमेंट ...

    • ... स्केलर के संदर्भ में इसके RHS द्वारा लौटाए गए स्केलरों की संख्या का मूल्यांकन करता है।

      # Only dies if f() returns an empty list.
      # This does not die if f() returns a
      # false scalar like zero or undef.
      my ($x) = f() or die;

      # $counts gets the number of scalars returns by f().
      my $count = () = f();
    • ... सूची के संदर्भ में, इसके LHS द्वारा स्केलर के रूप में लौटाए गए स्केलरों का मूल्यांकन करता है।

      # Prints @x.
      print(@x = @y);




assignment-operator