Over Arrays

0 Comments
  • 08/26/2020
  • 14 minuten te lezen
    • S
    • s
    • c

een Korte Beschrijving

– Tags-arrays die zijn data structuren ontworpen om storecollections van items.

lange beschrijving

een array is een gegevensstructuur die is ontworpen om een verzameling items op te slaan.De items kunnen hetzelfde type of verschillende types zijn.

begint in Windows PowerShell 3.,0, een verzameling van nul of een object heeft sommige eigenschappen van arrays.

een array aanmaken en initialiseren

om een array te maken en te initialiseren, wijs je meerdere waarden toe aan een variabele. De waarden opgeslagen in de array worden gescheiden door een komma en gescheiden van de variabele naam door de toegewezen operator (=).,

bijvoorbeeld, om een array te maken met de naam $A die de zeven numerieke (int)waarden van 22, 5, 10, 8, 12, 9, en 80, type:

de komma kan ook worden gebruikt om een enkele item array te initialiseren door thecomma voor het enkele item te plaatsen.

Als u bijvoorbeeld een array wilt maken met de naam $B die de enkelvoudige waarde van 7 bevat, typt u:

u kunt ook een array aanmaken en initialiseren met behulp van de range operator (..).,Het volgende voorbeeld maakt een array met de waarden 5 tot en met 8.

hierdoor bevat $C vier waarden: 5, 6, 7 en 8.

als er geen gegevenstype is opgegeven, maakt PowerShell elke array als een objectarray (systeem.Object). Om het gegevenstype van een array te bepalen, gebruikt u de methode GetType ()., Bijvoorbeeld, om het gegevenstype van de $Aarray te bepalen, typt u:

om een sterk getypte array te maken, dat wil zeggen een array die alleen waarden van een bepaald type kan bevatten, cast u de variabele als een array type, zoals string, long of int32. Om een array te casten, ga je vooraf aan de variable naam met een array type tussen haakjes., Om bijvoorbeeld een a32-bit integer array te maken met de naam $ia die vier gehele getallen bevat (1500, 2230, 3350,en 4000), typt u:

als gevolg hiervan kan de $ia array alleen gehele getallen bevatten.

u kunt arrays maken die naar elk ondersteund type in de Microsoft.NET Framework. Bijvoorbeeld, de objecten die Get-Process opvraagt om processen voor te stellen, zijn van het systeem.Diagnostiek.Procestype., Om een astronomisch getypte array van procesobjecten te maken, voert u het volgende commando in:

de operator subexpressie van de array

de operator subexpressie van de array maakt een array aan van de statements insideit. Wat het statement in de operator ook produceert, de operator plaatst het in een array. Zelfs als er nul of één object is.

de syntaxis van de array-operator is als volgt:

u kunt de array-operator gebruiken om een array van nul of één object te maken., Voorbeeld:

de array-operator is nuttig in scripts wanneer u objecten krijgt, maar weet niet hoeveel objecten u krijgt. Bijvoorbeeld:

voor meer informatie over de subexpressie-operator van de array, zie over_operators.

toegang tot en gebruik van array-elementen

het lezen van een array

u kunt naar een array verwijzen met de naam van de variabele. Als u alle elementen in de array wilt weergeven, typt u de naam van de array., Bijvoorbeeld, aangenomen dat $a een array is die gehele getallen 0, 1, 2, tot 9 bevat; typ:

U kunt naar de elementen in een array verwijzen door een index te gebruiken, beginnend bij positie 0. Voeg het indexnummer tussen haakjes., Bijvoorbeeld om eerste element in de $a array, type je:

Voor weergave van het derde element in de $a array van het type:

U kunt ophalen een onderdeel van de matrix met een bereik operator voor de index. Bijvoorbeeld, om de tweede tot vijfde elementen van de array op te halen, typt u:

negatieve getallen tellen vanaf het einde van de array., Bijvoorbeeld,” -1 ” verwijst naar het laatste element van de array. Om de laatste drie elementen van de array weer te geven, typ je:

als je negatieve indexen in aflopende volgorde typt, verandert je uitvoer.

wees echter voorzichtig bij het gebruik van deze notatie. De notatiecycli van de eindgrens tot het begin van de array.,

u kunt de plus-operator (+) gebruiken om een bereik te combineren met een lijst van elementen in een array. Om bijvoorbeeld de elementen op indexposities 0, 2 en 4 tot en met 6 weer te geven, typt u:

ook kunt u de plusoperator gebruiken om meerdere bereiken en afzonderlijke elementen weer te geven., Bijvoorbeeld, om elementen nul tot twee, vier tot zes, en het element op achtste positie type:

iteraties over array-elementen

u kunt ook loopingconstructies gebruiken, zoals ForEach, For, and While loops, om naar de elementen in een array te verwijzen. Als u bijvoorbeeld een ForEach-lus wilt gebruiken om de elementen in de $a array weer te geven, typt u:

de foreach-lus itereert door de array en geeft elke waarde in de array terug tot aan het einde van de array.,

de lus For is handig wanneer u tellers verhoogt terwijl u de elementen in een array onderzoekt. Als u bijvoorbeeld een For-lus wilt gebruiken om elke andere waarde in een array te retourneren, typt u:

U kunt een While-lus gebruiken om de elementen in een array weer te geven totdat een bepaalde voorwaarde niet langer waar is., Bijvoorbeeld om de elementen in de $aarray terwijl de array-index van minder dan 4, type je:

Eigenschappen van matrices

aantal of de Lengte of de LongLength

om Te bepalen hoeveel items worden in een array gebruik de Length woning of deCount alias. Longlength is nuttig als de array meer dan 2,147,483,647 elementen bevat.

Rank

geeft het aantal dimensies in de array terug., De meeste arrays in PowerShell hebben slechts één dimensie. Zelfs als je denkt dat je een multidimensionalarray bouwt; zoals het volgende voorbeeld:

het volgende voorbeeld laat zien hoe je een echt multidimensionale array maakt met behulp van het.NET Framework.

Methods of arrays

Clear

stelt alle elementwaarden in op de standaardwaarde van het elementtype van de array.De methode Clear () reset de grootte van de array niet.,

in het volgende voorbeeld $a is een array van objecten.

in dit voorbeeld wordt $intA expliciet getypt om gehele getallen te bevatten.

ForEach

maakt het mogelijk om over alle elementen in de array te herhalen en een bepaalde operatie uit te voeren voor elk element van de array.

de ForEach methode heeft meerdere overbelasting die verschillende bewerkingen uitvoert.,

ForEach(scriptblock expressie)

ForEach (scriptblock expressie, object argumenten)

deze methode is toegevoegd in PowerShell v4.

Note

de syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblock de enige parameter is. Ook mag er geen ruimte zijn tussen de methode en de openingshaakje of brace.

het volgende voorbeeld laat zien hoe de foreach methode wordt gebruikt. In dit geval is de bedoeling dat de kwadraatwaarde van de elementen in de array wordt gegenereerd.,

net als de -ArgumentList parameter van ForEach-Object, staat de argumentsparameter het doorgeven van een array van argumenten toe aan een script blockconfigured om ze te accepteren.

voor meer informatie over het gedrag van ArgumentList, zie over_splatting.,

ForEach (type convertToType)

de ForEach methode kan worden gebruikt om snel de elementen naar een andertype te casten; het volgende voorbeeld laat zien hoe een lijst met tekenreeksdatums naar type kan worden geconverteerd.

ForEach(string propertyName)

ForEach(string propertyName, object newValue)

de ForEach methode kan ook worden gebruikt om snel propertyvalues voor elk item in de collectie.,

ForEach(string methodName)

ForEach(string methodName, objectargumenten)

ten slotte kunnen ForEach methoden worden gebruikt om een methode uit te voeren op elk item in de collectie.

net als de -ArgumentList parameter van ForEach-Object, staat de argumentsparameter het doorgeven van een array van argumenten toe aan een script blockconfigured om ze te accepteren.

opmerking

start in Windows PowerShell 3.,0 het ophalen van eigenschappen en het uitvoeren van methoden voor elk item in een collectie kan ook worden bereikt met behulp van “methods of scalar objects and collections” u kunt meer hierover lezen hier over_methoden.

waarbij

toestaat om de elementen van de array te filteren of selecteren. Het script moet op iets anders evalueren dan: nul( 0), lege tekenreeks, $false of $null Voor het element dat getoond wordt na de Where

er is één definitie voor de Where methode.,

opmerking

de syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblock de enige parameter is. Ook mag er geen ruimte zijn tussen de methode en de openingshaakje of brace.

het Expression is scriptblock dat vereist is voor filtering, het modeoptioneel argument maakt extra selectiemogelijkheden mogelijk, en hetnumberToReturn optioneel argument maakt het mogelijk om te beperken hoeveel items uit het filter worden geretourneerd.,p>the acceptable values for mode are:

  • Default (0) – Return all items
  • First (1) – Return the first item
  • Last (2) – Return the last item
  • SkipUntil (3) – Skip items until condition true, the return the remainingitems
  • Until (4) – Return all items until (4) True
  • Split (5) – Geef een array van twee elementen
    • het eerste element bevat overeenkomende items
    • het tweede element bevat de resterende items

het volgende voorbeeld laat zien hoe alle oneven getallen uit de array worden geselecteerd.,

dit voorbeeld laat zien hoe u de tekenreeksen selecteert die niet leeg zijn.

standaard

de mode filtert items met behulp van de Expression scriptblock.

als een numberToReturn wordt verstrekt, geeft dit het maximum aantal items aan dat moet worden geretourneerd.,

Note

zowel de mode en First mode retourneren de eerste(numberToReturn) items, en kunnen door elkaar worden gebruikt.

Laatste

SkipUntil

de modus SkipUntil slaat alle objecten in een verzameling over totdat een object het script block expression filter passeert. Het retourneert dan alle resterende collectionitems zonder ze te testen. Slechts één passerend item wordt getest.

Dit betekent dat de geretourneerde collectie zowel passerende als niet-passerende items bevat die niet zijn getest.,

het aantal geretourneerde items kan worden beperkt door een waarde door te geven aan het argumentnumberToReturn.

totdat

de Until modus de SkipUntil modus omdraait. Het retourneert alle items in acollection totdat een item de script blok expressie passeert. Zodra een item de scriptblock expressie passeert, stopt deWhere methode met het verwerken van items.

Dit betekent dat u de eerste set niet-passerende items ontvangt van deWhere methode., Nadat één item is gepasseerd, wordt de rest niet getest of geretourneerd.

het aantal geretourneerde items kan worden beperkt door een waarde door te geven aan het argumentnumberToReturn.

Note

beide Until en SkipUntil werken onder de premisse van het niet testen van een reeks items.

Until geeft de items vóór de eerste pass terug.

SkipUntil geeft alle items terug na de eerste pas, inclusief het eerste passerende item.,

splitsen

deSplit modus splitst, of groepeert collecties in twee gescheiden collecties. Degenen die de scriptblock expressie passeren, en degenen die dat niet doen.

als een numberToReturn is gespecificeerd, bevat de eerste verzameling de passerende items, die de opgegeven waarde niet mogen overschrijden.

de overige objecten, zelfs die welke het expressiefilter passeren, worden in de tweede verzameling geturnd.,

haal de leden van een array

om de eigenschappen en methoden van een array te verkrijgen, zoals de lengte-eigenschap en de SetValue-methode, gebruik de Inputobjectparameter van de Get-Membercmdlet.

wanneer u een array pijpt naar Get-Member, verzendt PowerShell de items een keer en Get-Member geeft het type van elk item in de array terug (igningduplicates).

wanneer u de InputObject parameter gebruikt, geeft Get-Member de leden van de array terug.,

bijvoorbeeld, het volgende commando krijgt de leden van de $a arrayvariable.

u kunt ook de leden van een array krijgen door een komma (,) te typen voor de waarde die wordt doorgesluisd naar de Get-Member cmdlet. De komma maakt de array het tweede item in een array van arrays. PowerShell pipes de arrays een voor een en Get-Member geeft de leden van de array. Zoals de volgende twee voorbeelden.,

Manipulating an array

U kunt de elementen in een array wijzigen, een element aan een array toevoegen en de waarden van twee arrays combineren in een derde array.

om de waarde van een bepaald element in een array te wijzigen, specificeer je de arraynaam en de index van het element dat je wilt wijzigen, en gebruik dan de assignment operator (=) om een nieuwe waarde voor het element te specificeren., Als u bijvoorbeeld de waarde van het tweede item in de $a array (indexpositie 1) wilt wijzigen naar 10,typt u:

U kunt ook de SetValue-methode van een array gebruiken om een waarde te wijzigen. Het volgende voorbeeld verandert de tweede waarde (indexpositie 1) van de $a arrayto 500:

u kunt de += gebruiken om een element aan een array toe te voegen. Het volgende voorbeeld laat zien hoe je een element toevoegt aan de $a array.,

Note

wanneer u de operator += gebruikt, maakt PowerShell in feite een nieuwe arrayaan met de waarden van de oorspronkelijke array en de toegevoegde waarde. Dit kan leiden tot prestatieproblemen als de operatie meerdere keren wordt herhaald of de grootte van de array te groot is.

Het is niet eenvoudig om elementen uit een array te verwijderen, maar u kunt een newarray maken die alleen geselecteerde elementen van een bestaande array bevat., Bijvoorbeeld,om de $t array aan te maken met alle elementen in de $a array behalve de waarde op indexpositie 2, typ:

om twee arrays te combineren tot één array, gebruik de plus operator (+). Het volgende voorbeeld maakt twee arrays, combineert ze, en toont dan de resulterende gecombineerde array.

als gevolg hiervan bevat de $z array 1, 3, 5 en 9.,

om een array te verwijderen, wijs een waarde van $null toe aan de array. Het volgende commando verwijdert de array in de $a variabele.

$a = $null

u kunt ook de Remove-Item cmdlet gebruiken, maar het toewijzen van een waarde van $null isfaster, vooral voor grote arrays.

Arrays van nul of één

beginnend in Windows PowerShell 3.0 heeft een verzameling van nul of één object de eigenschap aantal en lengte. Ook kun je indexeren in een array van oneobject., Deze functie helpt u bij het voorkomen van scripting fouten die optreden wanneer een commando dat verwacht dat een collectie krijgt minder dan twee items.

de volgende voorbeelden tonen deze functie.

Nulobjecten

Eén object

Indexeringsondersteuning voor systeem.Tuple-objecten

PowerShell 6.1 heeft ondersteuning toegevoegd voor geïndexeerde toegang van Tuple-objecten, vergelijkbaar met arrays.,Bijvoorbeeld:

In tegenstelling tot arrays en andere collectieobjecten, worden Tupelobjecten als één object behandeld wanneer ze door de pijplijn worden geleid of door parameters die de stralen van objecten ondersteunen.

voor meer informatie, zie systeem.Tuple.

zie ook

  • about_Assignment_Operators
  • about_Hash_Tables
  • about_Operators
  • about_For
  • about_Foreach
  • about_While


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *