Array :: vergelijken

array :: vergelijken is een perl-extensie voor het vergelijken van arrays.
Download nu

Array :: vergelijken Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Dave Cross
  • Uitgever website:
  • http://search.cpan.org/~davecross/Array-Compare-1.14/lib/Array/Compare.pm

Array :: vergelijken Tags


Array :: vergelijken Beschrijving

Array :: vergelijken is een perl-extensie voor het vergelijken van arrays. Synopsis Gebruik array :: vergelijken; mijn $ Comp1 = array :: vergelijking-> nieuw; $ comp-> sep ('|'); $ Comp-> Skip ({3 => 1, 4 => 1}); $ Comp-> WhiteSpace (0); $ Comp-> zaak (1); Mijn $ Comp2 = Array :: Vergelijking-> Nieuw (sep => '|', witspace => 0, case => 1, skip => {3 => 1, 4 => 1}); mijn @ arr1 = 0 .. 10; mijn @ arr2 = 0 .. 10; $ comp1-> Vergelijk (@ arrl, @ arr2); $ Comp2-> Vergelijk (@ arrl, @ arr2); als je twee arrays hebt en je wilt weten of ze hetzelfde of anders zijn, dan is array :: vergelijken handig voor je. Alle vergelijkingen worden uitgevoerd via een comparator object. In het eenvoudigste gebruik kunt u een comparatorobject als volgt maken en gebruiken: My @ ARR1 = 0 .. 10; mijn @ arr2 = 0 .. 10; mijn $ comp = array :: vergelijking-> nieuw; if ($ Comp-> Vergelijk (@ arrl, @ arr2)) {print "-arrays zijn de SAMEN"; } anders {print "-arrays zijn differentyn"; } Merk op dat u verwijzingen naar de twee arrays naar de vergelijkingsmethode doorgeeft. Internaal vergelijkt de comparator de twee arrays met behulp van Join om beide arrays in snaren te draaien en de snaren te vergelijken met behulp van EQ. In de gezamenlijke snaren worden de elementen van de oorspronkelijke arrays gescheiden met het teken ^ G. Dit kan problemen veroorzaken als uw arraygegevens ^ G-tekens bevatten, omdat het mogelijk is dat twee verschillende arrays kunnen worden geconverteerd naar dezelfde reeks. Om dit te voorkomen, is het mogelijk om het standaardscheidingskarakter te negeren, hetzij door te passeren en alternatief te passeren Functie My $ Comp = array :: vergelijking-> nieuw (sep => '|'); of door de seperator te wijzigen voor een bestaande comparatorobject $ Comp-> Sep ('|'); in het algemeen moet u een scheidingsteken kiezen Dat verschijnt niet in uw gegevens. U kunt ook bepalen of with-witruimte binnen de elementen van de arrays moet worden beschouwd als significant bij het maken van de vergelijking. De standaardinstelling is dat alle witruimte aanzienlijk is. Het alternatief is voor alle opeenvolgende witte ruimtetekens die moeten worden geconverteerd naar een enkele ruimte voor de knoppen van de vergelijking. Nogmaals, dit kan worden ingeschakeld bij het maken van een comparatorobject: mijn $ comp = array :: vergelijking-> nieuw (witspace => 0); of door een bestaand object te wijzigen: $ Comp-> WhiteSpace (0). Controle of het geval van de gegevens aanzienlijk is in de vergelijking. De standaardwaarde is dat het geval van gegevens in aanmerking wordt genomen. Dit kan op de standaardmanieren worden gewijzigd bij het maken van een nieuwe comparatorobject: mijn $ comp = array :: vergelijking-> nieuw (zaak => 0); of door een bestaand object te wijzigen: $ Comp-> Case (0); in Toevoeging aan de eenvoudige vergelijking die hierboven is beschreven (die true retourneert als de arrays hetzelfde en onwaar zijn als ze anders zijn) is er ook een volledige vergelijking die een lijst retourneert met de indexen van elementen die verschillen tussen de twee arrays. Als de arrays hetzelfde zijn, retourneert het een lege lijst. In Scalar Context retourneert de volledige vergelijking de lengte van deze lijst (d.w.z. het aantal elementen die verschillen). U kunt op twee manieren toegang krijgen tot de volledige vergelijking. Ten eerste is er een defbell-attribuut. Als dit waar is, een volledige vergelijking indien uitgevoerd wanneer de vergelijkingsmethode wordt genoemd. mijn $ comp = array :: vergelijk-> nieuw (defbel => 1); $ comp-> Vergelijk (@ arrl, @ arr2); # Volledige vergelijking $ Comp-> defbell (0); $ comp-> Vergelijk (@ arrl, @ arr2); # Eenvoudige vergelijking $ COMP-> DEFFOLL (1); $ comp-> Vergelijk (@ arrl, @ arr2); # Volledige vergelijking Nogmaals, je hebt toegang tot de volledige vergelijkingsmethode direct $ Comp-> full_compare (@ arrl, @ arr2); voor symmetrie is er ook een directe methode om te gebruiken om de eenvoudige vergelijking te bellen. $ Comp-> Simple_Compare (@ arrl, @ arr2); de definitieve complicatie is het vermogen om elementen in de vergelijking over te slaan. Als u weet dat twee arrays altijd in een bepaald element verschillen, maar de arrays willen vergelijken met het negeren van dit element, kunt u het doen met array :: vergelijken zonder arrayplakken te nemen. Om dit te doen, heeft een comparatorobject een optioneel attribuut genaamd Skip die een verwijzing naar een hash is. De sleutels in deze hash zijn de indexen van de array-elementen en de waarden moeten een echte waarde zijn voor elementen die moeten worden overgeslagen. Zie voorbeeld, als u twee arrays wilt vergelijken, waarbij u de waarden in elementen twee en vier wilt vergelijken, kunt u doen zoiets als volgt: mijn% overslaan = (2 => 1, 4 => 1); mijn @A = (0, 1, 2, 3, 4, 5); mijn @B = (0, 1, X, 3, X, 5); mijn $ comp = array :: vergelijking-> nieuw (Skip =>% Skip); $ Comp-> Vergelijk (@A, @B); dit moet true retourneren, omdat we expliciet de kolommen negeren die verschillen. Van de cursus, een comparatorobject hebben gemaakt zonder Skip Hash, is het mogelijk om een later toe te voegen: $ COMP-> SKIP ({1 => 1, 2 => 1}); of: mijn% overslaan = (1 => 1, 2 => 2); $ Comp-> Skip (% Skip); om de comparator opnieuw in te stellen, zodat deze niet langer elementen overslaat, stel de Skip Hash in op een lege hash. $ Comp-> Skip ({}); je kunt ook controleren of een array een permutatie van een ander is, d.w.z. ze bevatten dezelfde elementen, maar in een andere volgorde. if ($ Comp-> Perm (@A, @b) {print "-arrays zijn permsn", anders {print "nee. Arrays zijn volledig differentyn";} in dit geval worden de waarden van witruimtes en de behuizing nog steeds gebruikt, maar skip wordt genegeerd voor, hopelijk, voor de hand liggende redenen.Requirements: · Perl


Array :: vergelijken Gerelateerde software

Neem

NEEM is een bibliotheek die een implementatie van epidemische multicast biedt. ...

148

Downloaden