om Arrays (Svenska)

0 Comments
  • 08/26/2020
  • 14 minuter att läsa
    • s
    • s
    • c

kort beskrivning

beskriver matriser, som är datastrukturer utformade för att lagrasamling av objekt.

lång beskrivning

en array är en datastruktur som är utformad för att lagra en samling objekt.Objekten kan vara av samma typ eller olika typer.

börjar i Windows PowerShell 3.,0, en samling av noll eller ett objekt harnågra egenskaper hos arrayer.

skapa och initiera en array

för att skapa och initiera en array, tilldela flera värden till en variabel. De värden som lagras i matrisen avgränsas med ett kommatecken och separeras från det oföränderliga namnet av tilldelningsoperatören (=).,

till exempel för att skapa en array som heter $A som innehåller de sju numeriska (int)värdena för 22, 5, 10, 8, 12, 9, och 80, typ:

kommatecken kan också användas för att initiera en enda postmatris genom att placera thecomma före det enskilda objektet.

till exempel, för att skapa en enda postmatris som heter$B som innehåller singlevalue av 7, Typ:

Du kan också skapa och initiera en array med hjälp av range operator (..).,Följande exempel skapar en matris som innehåller värdena 5 till 8.

som ett resultat innehåller $C fyra värden: 5, 6, 7 och 8.

När ingen datatyp anges skapar PowerShell varje matris som en objectarray (System.Föremål). För att bestämma datatypen för en array, användgettype () – metoden., Till exempel, för att bestämma datatypen för $A – matrisen, skriv:

för att skapa en starkt typad array, det vill säga en matris som bara kan innehållavärden av en viss typ, kasta variabeln som en array-typ, till exempel sträng, lång eller int32. För att kasta en array, föregårvariabelt namn med en array typ innesluten inom parentes., Till exempel, för att skapa ett 32-bitars heltal som heter $ia som innehåller fyra heltal (1500, 2230,3350 och 4000), skriv:

som ett resultat kan matrisen $ia bara innehålla heltal.

Du kan skapa matriser som är gjutna till vilken typ som helst som stöds i Microsoft.NET ramverk. Till exempel är de objekt som Get-Process hämtar torepresent processer av systemet.Diagnos.Processen typ., För att skapa en astronomisk uppsättning processobjekt anger du följande kommando:

array sub-expression operator

array sub-expression operator skapar en array från uttalandena insideit. Oavsett uttalandet inuti operatören producerar, kommer operatörenplacera det i en array. Även om det finns noll eller ett objekt.

arrayoperatörens syntax är följande:

Du kan använda arrayoperatören för att skapa en matris med noll eller ett objekt., Exempel:

matrisoperatören är användbar i skript när du får objekt, men vet inte hur många objekt du får. Till exempel:

För mer information om array subuttryck operator, seeabout_Operators.

åtkomst till och användning av array elements

läsa en array

Du kan referera till en array genom att använda dess variabelnamn. För att visa allaelement i matrisen, skriv matrisnamnet., Till exempel, förutsatt att $a är anarray som innehåller heltal 0, 1, 2, tills 9; typing:

Du kan referera till elementen i en array genom att använda ett index som börjar vidposition 0. Bifoga indexnumret inom parentes., Till exempel, för att visa detförsta elementet i $a array, typ:

för att visa det tredje elementet i matrisen $a, typ:

Du kan hämta en del av matrisen med hjälp av en intervalloperatör för indexet. För att till exempel hämta det andra till femte elementet i matrisen skulle du skriva:

negativa tal räknas från slutet av matrisen., Till exempel hänvisar ”-1” tilldet sista elementet i matrisen. För att visa de tre sista elementen iarray, i index stigande ordning, skriv:

om du skriver negativa index i fallande ordning ändras utdata.

var försiktig när du använder den här notationen. Notationscyklerna frånslutgränsen till början av matrisen.,

Du kan använda plusoperatören (+) för att kombinera ett intervall med en lista över elementi en array. Till exempel, för att visa elementen vid indexpositioner 0, 2 och4 till 6, skriv:

för att lista flera intervall och enskilda element kan du använda plusoperatorn., Till exempel, för att lista element noll till två, fyra till sex, och elementet vid åttonde positions typ:

iterationer över array element

Du kan också använda looping konstruktioner, såsom ForEach, för, Och medan loopar, torefer till elementen i en array. Till exempel, för att använda en ForEach loop todisplay elementen i $a array, typ:

Foreach loop itererar genom matrisen och returnerar varje värde i thearray tills den når slutet av matrisen.,

For loop är användbar när du ökar räknare medan du undersöker elementen i en array. Till exempel, för att använda en för loop för att returnera alla andravärde i en array, skriv:

Du kan använda en While loop för att visa elementen i en array tills en definieradtillstånd inte längre är sant., Till exempel, för att visa elementen i matrisen $amedan matrisindexet är mindre än 4, skriv:

egenskaper för arrayer

räkna eller längd eller långlängd

för att bestämma hur många objekt som finns i en array, använd Length egendom eller dessCount Alias. Longlength är användbart om matrisen innehåller mer än2,147,483,647 element.

Rank

Returnerar antalet dimensioner i matrisen., De flesta arrays i PowerShell haren dimension, bara. Även när du tror att du bygger en flerdimensionellarray; som följande exempel:

följande exempel visar hur du skapar en verkligt flerdimensionell array med.NET Framework.

metoder för arrayer

Clear

anger alla elementvärden till standardvärdet för arrayen”s elementtyp.Metoden Clear () återställer inte storleken på matrisen.,

i följande exempel $a är en rad objekt.

i det här exemplet skrivs $intA uttryckligen för att innehålla heltal.

ForEach

tillåter att iterera över alla element i matrisen och utföra en given operationför varje element i matrisen.

ForEach-metoden har flera överbelastningar som utför olika operationer.,

ForEach(scriptblock expression)

ForEach (scriptblock expression, object arguments)

denna metod lades till i PowerShell v4.

Obs

syntaxen kräver användning av ett scriptblock. Parenteser är valfria omskriptblock är den enda parametern. Det får inte heller finnas ett utrymmemellan metoden och öppningsparentesen eller stag.

följande exempel visar hur du använder foreach-metoden. I det här fallet ärintenten att generera kvadratiska värdet av elementen i matrisen.,

precis som parametern-ArgumentList för parameternForEach-Object tillåter parameternargumentsatt en rad argument skickas till ett manusblockkonfigurerat för att acceptera dem.

För mer information om Argumentlists beteende, seeabout_Splatting.,

ForEach(type convertToType)

metodenForEach kan användas för att snabbt kasta elementen till en annantyp.följande exempel visar hur du konverterar en lista med strängdatum till – typen.

ForEach(string propertyName)

ForEach(string propertyName, object newValue)

metoden ForEach kan också användas för att snabbt hämta, eller ställa in propertyvalues för varje objekt i samlingen.,

ForEach(string methodName)

ForEach(string methodName, object arguments)

slutligen kanForEach metoder användas för att utföra en metod för varje objekt i samlingen.

precis som parametern-ArgumentList för parameternForEach-Object tillåter parameternargumentsatt en rad argument skickas till ett manusblockkonfigurerat för att acceptera dem.

Obs

startar i Windows PowerShell 3.,0 hämta egenskaper och exekveringsmetoder för varje objekt i en samling kan också åstadkommas med hjälp av ”Metoderav skalära objekt och samlingar” du kan läsa mer om det härabout_methods.

där

tillåter att filtrera eller välja elementen i matrisen. Skriptet måste utvärderatill något annat än: noll (0), tom sträng, $false eller $null för elementet som ska visas efter Where

det finns en definition för metoden Where.,

Obs

syntaxen kräver användning av ett scriptblock. Parenteser är valfria omskriptblock är den enda parametern. Det får inte heller finnas ett utrymmemellan metoden och öppningsparentesen eller stag.

Expression är scriptblock som krävs för filtrering,modevalfritt argument tillåter ytterligare urvalsfunktioner, ochnumberToReturn valfritt argument gör det möjligt att begränsa hur många objektåterlämnas från filtret.,p>de acceptabla värdena för mode är:

  • Default (0) – returnera alla objekt
  • först (1) – returnera det första objektet
  • sista (2) – returnera det sista objektet
  • SkipUntil (3) – Hoppa över objekt tills villkoret är sant, returnera remainingitems
  • tills (4) – returnera alla objekt tills villkoret är sant
  • Split (5) – returnera en matris med två element
    • det första elementet innehåller matchande objekt
    • Det andra elementet innehåller de återstående objekten

följande exempel visar hur man väljer alla udda nummer från matrisen.,

det här exemplet visar hur du väljer strängarna som inte är tomma.

standard

lägetDefault filtrerar objekt med hjälp avExpression scriptblock.

om en numberToReturn tillhandahålls, anger den det maximala antalet objekt att returnera.,

notera

bådeDefault – läget ochFirst – läget returnerar de första (numberToReturn) objekten och kan användas omväxlande.

sist

SkipUntil

SkipUntil – läget hoppar över alla objekt i en samling tills ett objekt passerarhe script block expression filter. Det returnerar sedan alla återstående collectionitems utan att testa dem. Endast ett passerande objekt testas.

det betyder att den returnerade samlingen innehåller både passerande och icke-passerande objekt som inte har testats.,

antalet returnerade objekt kan begränsas genom att skicka ett värde till argumentetnumberToReturn.

tills

lägetUntil inverterar lägetSkipUntil. Den returnerar alla objekt i acollection tills ett objekt passerar scriptblockuttrycket. När en itempasses scriptblock uttryck, den Where metoden slutar behandla objekt.

det betyder att du får den första uppsättningen icke-passande objekt frånWhere – metoden., Efter ett objekt passerar, resten inte testas eller returneras.

antalet returnerade objekt kan begränsas genom att skicka ett värde till argumentetnumberToReturn.

notera

bådeUntil ochSkipUntil arbeta under förutsättningen att inte testa en batchof objekt.

Until returnerar objekten före det första passet.

SkipUntil returnerar alla objekt efter det första passet, inklusive det första passerande objektet.,

Split

lägetSplit delas upp eller grupperar uppsamlingsobjekt i två separatasamlingar. De som passerar scriptblock-uttrycket, och de som inte gör det.

om ennumberToReturn anges, innehåller den första samlingen passningsobjekt, inte överskrida det angivna värdet.

de återstående objekten, även de som passerar uttrycksfiltret, äråtervändes i den andra samlingen.,

hämta medlemmarna i en array

för att få egenskaperna och metoderna för en array, till exempel Längdegenskapen och SetValue-metoden, använd inputobject-parametern förGet-Membercmdlet.

När du rör en matris tillGet-Member skickar PowerShell objekten oneat en gång ochGet-Member returnerar typen av varje objekt i matrisen (ignoringduplicates).

När du använder parametern InputObject returnerar Get-Member arrayens medlemmar.,

till exempel får följande kommando medlemmarna i $a arrayvariable.

Du kan också få medlemmarna i en array genom att skriva ett kommatecken (,) innan värdet som leds tillGet-Member cmdlet. Kommatecken gör matrisensekund objekt i en rad matriser. PowerShell rör matriserna en ata-tid och Get-Member returnerar medlemmarna i matrisen. Som nästa tvåexempel.,

manipulera en array

Du kan ändra elementen i en array, lägga till ett element i en array ochkombinera värdena från två arrayer till en tredje array.

för Att ändra värdet för ett visst element i en array, ange arrayname och index för det element som du vill ändra och använd sedan theassignment operatör (=) för att ange ett nytt värde för elementet., Till exempel, för att ändra värdet för det andra objektet i $a array (indexposition 1) to10, skriv:

Du kan också använda SetValue-metoden för en array för att ändra ett värde. Följande exempel ändrar det andra värdet (indexposition 1) för $a arrayto 500:

Du kan använda += – operatören för att lägga till ett element i en array. Followingexample visar hur du lägger till ett element i matrisen$a.,

Obs

När du använder operatören+= skapar PowerShell faktiskt en ny arraymed värdena för den ursprungliga matrisen och mervärdet. Denna mightcause prestandaproblem om operationen upprepas flera gånger ellerstorleken på matrisen är för stor.

det är inte lätt att ta bort element från en array, men du kan skapa en newarray som endast innehåller utvalda element i en befintlig array., Till exempel, för att skapa matrisen $t med alla element i matrisen $a med undantag förvärdet vid indexposition 2, Skriv:

för att kombinera två matriser i en enda array, använd plusoperatören (+). Följande exempel skapar två matriser, kombinerar dem och visar sedan den kombinerade matrisen.

som ett resultat innehåller$z – matrisen 1, 3, 5 och 9.,

för att ta bort en array, tilldela ett värde på$null till matrisen. Followingcommand raderar matrisen i variabeln$a.

$a = $null

Du kan också användaRemove-Item cmdlet, men tilldela ett värde på$null isfaster, speciellt för stora matriser.

matriser med noll eller en

börjar i Windows PowerShell 3.0, en samling av noll eller ett objekt harräkning och Längdegenskap. Du kan också indexera till en rad oneobject., Den här funktionen hjälper dig att undvika skriptfel som uppstår när acommand som förväntar sig en samling får färre än två objekt.

följande exempel visar den här funktionen.

noll objekt

ett objekt

Indexeringsstöd för systemet.Tuple objects

PowerShell 6.1 lade till stöd för indexerad åtkomst av Tuple-objekt, som liknar arrays.,Till exempel:

Till skillnad från matriser och andra samlingsobjekt behandlas Tupleobjekt som asingleobjekt när de passerar genom rörledningen eller av parametrar som stöderstrålar av objekt.

Mer information finns i System.Tuple.

Se även

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


Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *