Context :: behouden

Voercode na een subroutine-oproep, het behoud van de context De subroutine zou hebben gezien als het de laatste verklaring in de beller was
Download nu

Context :: behouden Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Jonathan Rockway
  • Uitgever website:
  • http://search.cpan.org/~jrockway/

Context :: behouden Tags


Context :: behouden Beschrijving

Voer de code uit na een subroutine-oproep, het behoud van de context De subroutine zou hebben gezien als het de laatste verklaring in de beller was Context :: Preserve is een PERL-module die u helpt bij het uitvoeren van code na een subroutine-oproep, het behoud van de context De subroutine zou hebben gezien als het de laatste verklaring in de beller is. Synopsisjave Heb je dit ooit geschreven? mijn ($ resultaat, @result); # Voer een sub in de juiste context uit als (! gedefinieerd Wantarray) {Sommigen :: Code (); } Elsif (Wantarray) {@Result = Sommige :: Code (); } anders {$ resultaat = sommige :: code (); } # Doe iets na sommige :: Code $ _ + = 42 voor (@result, $ resultaat); # Eindelijk de juiste waarde retourneren als (! gedefinieerde Wantarray) {Return; } Elsif (wantarray) {return @result; } anders {return $ resultaat; } Nu kunt u dit gewoon schrijven in plaats daarvan: gebruik context :: behouden; Return Preserve_Context {Sommigen :: Code ()} NA => Sub {$ _ + = 42 voor @_}; Soms moet je een functie bellen, de resultaten ophalen, op de resultaten opslaan en vervolgens het resultaat van de functie retourneren. Dit is pijnlijk vanwege contexten; De originele functie kan zich anders gedragen als het in ongeldige, scalaire of lijstcontext wordt genoemd. Je kunt de verschillende gevallen negeren en er één kiezen, maar dat is fragiel. Om dingen goed te doen, moet je zien welk geval je wordt ingeschakeld en neem dan de functie in die context. Dit resulteert in 3-codepaden, die een pijn is om in te typen (en onderhouden). Deze module automatiseert het proces. U geeft een CODEREF dat de "originele functie" is, en een andere CODEREF om te rennen na de originele runs. U kunt de retourwaarde (aliased to @_) hier wijzigen en doen wat u nog meer nodig hebt. Wildarray is correct in beide coderefs; In "After" wordt de retourwaarde echter genegeerd en is de waarde van de waarde Wantarray geretourneerd met de context dat de originele functie is ingeschakeld. Vereisten: · Perl


Context :: behouden Gerelateerde software