Om Matriser
- 08/26/2020
- 14 minutter på å lese
-
- S
- s
- c
Kort Beskrivelse
Beskriver matriser, som er data strukturer utviklet for å storecollections av elementer.
Lang Beskrivelse
En matrise er en datastruktur som er designet for å lagre en samling av elementer.Elementene kan være av samme type eller ulike typer.
Begynner i Windows PowerShell-3.,0, en samling av null eller ett objekt hassome egenskaper av matriser.
Opprette og initialisere en matrise
for Å opprette og initialisere en array, må du tilordne flere verdier til en variabel. Thevalues lagret i tabellen er separert med et komma, og atskilt fra thevariable navn av tilordningsoperatoren (=
).,
For eksempel, for å opprette en array som heter $A
som inneholder syv tall (int)verdier av 22, 5, 10, 8, 12, 9, og 80, skriv:
komma kan også brukes til å initialisere en enkelt element array ved å plassere thecomma før det enkelt element.
For eksempel, for å lage et enkelt element array som heter $B
inneholder singlevalue av 7, skriv:
Du kan også opprette og initialisere en matrise ved hjelp av utvalg operatøren (..
).,Følgende eksempel oppretter en array som inneholder verdiene 5 til 8.
Som et resultat, $C
består av fire verdier: 5, 6, 7, og 8.
Når ingen data type er angitt, PowerShell skaper hver rekke som en objectarray (System.Gjenstand). For å fastslå datatypen til en matrise, bruk theGetType () – metoden., For eksempel, å bestemme data type $A
array, skriv:
for Å lage et sterkt skrevet array, som er en array som kan inneholde onlyvalues av en bestemt type, kastet de variable som en matrise, slik asstring, lange, eller int32. Å kaste en rekke, foran thevariable navn med en matrise står i parentes., For eksempel, for å skape a32-bit integer array som heter $ia
inneholder fire heltall (1500, 2230, 3350, – og 4000), skriv:
Som et resultat, $ia
array kan bare inneholde heltall.
Du kan lage matriser som er støpt til en støttet skriver i Microsoft.NET Rammeverket. For eksempel, objekter som Get-Process
henter torepresent prosesser er av Systemet.Diagnose.Prosessen type., For å skape astrongly skrevet utvalg av prosessen objekter, skriv inn følgende kommando:
array sub-uttrykk operatør
array sub-uttrykk operatør lager en matrise fra uttalelser insideit. Uansett uttalelse inne operatøren gir operatøren willplace det i en matrise. Selv om det er null eller ett objekt.
syntaksen av tabellen operatør er som følger:
Du kan bruke array-operatoren for å opprette en matrise av null eller ett objekt., Forexample:
array operatør er nyttig i skriptene når du får objekter, men ikke vet hvor mange ting du få. For eksempel:
For mer informasjon om matrisen sub-uttrykk operatør, seeabout_Operators.
få Tilgang til og bruke array-elementer
Lese en matrise
Du kan referere til en matrise ved hjelp av sin variabelnavn. For å vise alle theelements i matrisen, type array-navn., For eksempel, forutsatt $a
er anarray inneholder naturlige tallene 0, 1, 2, til 9; å skrive:
Du kan se elementene i en array ved hjelp av en indeks, begynnelsen atposition 0. Legge indeksen nummer i parentes., For eksempel, for å vise thefirst element i $a
array, skriv:
for Å vise den tredje elementet i $a
array, skriver du inn:
Du kan hente en del av matrisen ved hjelp av et utvalg operatør for indeksen. Forexample, for å hente den andre til femte elementene i matrisen, du wouldtype:
Negative tall telle fra slutten av tabellen., For eksempel, «-1» viser til siste del av tabellen. For å vise siste tre elementer i thearray, i indeks stigende rekkefølge, skriver du:
Hvis du skriver negative indekser i synkende rekkefølge, din utgang endringer.
Imidlertid være forsiktig når du bruker denne notasjonen. Notasjonen sykluser fra seher grensen til begynnelsen av tabellen.,
Du kan bruke pluss-operatør (+
) for å kombinere områder med en liste over elementsin en matrise. For eksempel, for å vise elementene i indeksen stillinger 0, 2, and4 gjennom 6, skriv:
Også, for å liste opp flere områder og enkelte elementer som du kan bruke plusoperator., For eksempel, for å liste opp elementer null til to, fire og seks, og theelement på åttende stedsbestemt, skriv:
Iterasjoner over array-elementer
Du kan også bruke løkker konstruksjoner, for eksempel ForEach, For, og Mens looper, torefer til elementene i en matrise. For eksempel, for å bruke en ForEach loop todisplay elementene i $a
array, skriv:
Foreach loop-koden gjennom matrise og returnerer hver verdi i thearray fram til slutten av tabellen.,
For-løkke er nyttig når du er stigende tellere mens undersøke theelements i en matrise. For eksempel, for å bruke en For-løkke til å vende om, hver othervalue i en matrise, skriv:
Du kan bruke en While-løkke for å vise elementene i en array til en definedcondition er ikke lenger sant., For eksempel, for å vise elementene i $a
array mens tabellindeksen er mindre enn 4, skriv:
Egenskaper av matriser
Telle eller Lengde eller LongLength
for Å finne ut hvor mange elementer er i en rekke, bruk Length
eiendel eller densCount
alias. Longlength
er nyttig hvis tabellen inneholder mer than2,147,483,647 elementer.
Verdi
Returnerer antall dimensjoner i tabellen., De fleste tabeller i PowerShell haveone dimensjon, bare. Selv når du tror du er å bygge en multidimensionalarray; som i følgende eksempel:
følgende eksempel viser hvordan du oppretter en virkelig flerdimensjonal array usingthe .Net Framework.
Metoder for matriser
Slett
Sett alle element verdier til standard verdi av tabellen»s element type.Clear () – metoden ikke tilbakestille størrelsen på tabellen.,
I det følgende eksemplet $a
er en array av objekter.
I dette eksempelet, $intA
er uttrykkelig skrevet for å inneholde heltall.
ForEach
Gjør det mulig å iterere over alle elementene i matrisen og utføre en gitt operationfor hvert element i matrisen.
ForEach metoden har flere overbelastning som utfører forskjellige operasjoner.,
ForEach(scriptblock uttrykk)
ForEach(scriptblock uttrykk, objekt argumenter)
Denne metoden ble lagt i PowerShell v4.
Merk
syntaksen krever bruk av skript blokk. Parentes er valgfritt ifthe scriptblock er den eneste parameteren. Også, det må ikke være en spacebetween metode og åpning parentes eller spenne.
følgende eksempel viser hvordan bruke foreach-metoden. I dette tilfellet theintent er å generere square verdien av elementene i matrisen.,
Akkurat som -ArgumentList
parameter av ForEach-Object
, arguments
parameteren gir bestått av en rekke argumenter til et script blockconfigured til å akseptere dem.
For mer informasjon om atferden til ArgumentList, seeabout_Splatting.,
ForEach(type convertToType)
ForEach
metoden kan brukes til å raskt kastet elementene til en differenttype; følgende eksempel viser hvordan du konvertere en liste over string datoer for å type.
ForEach(string egenskapsnavn)
ForEach(string egenskapsnavn, objekt newValue)
ForEach
metoden kan også brukes til å raskt hente eller sette propertyvalues for ethvert element i samlingen.,
ForEach(string methodName)
ForEach(string methodName, objekt argumenter)
til Slutt, ForEach
metoder kan brukes til å utføre en metode på hvert element i samlingen.
Akkurat som -ArgumentList
parameter av ForEach-Object
, arguments
parameteren gir bestått av en rekke argumenter til et script blockconfigured til å akseptere dem.
Merk
Start i Windows PowerShell-3.,0 gjenopprette egenskaper og executingmethods for hvert element i en samling kan også oppnås ved å bruke «Methodsof skalar gjenstander og samlinger» Du kan lese mer om det hereabout_methods.
Der
Gjør det mulig å filtrere eller velg elementene i matrisen. Skriptet må evaluateto noe annet enn: null (0), tom streng, $false
eller $null
forthe element for å vise etter Where
Det er en definisjon for Where
metode.,
Merk
syntaksen krever bruk av skript blokk. Parentes er valgfritt ifthe scriptblock er den eneste parameteren. Også, det må ikke være en spacebetween metode og åpning parentes eller spenne.
Expression
er scriptblock som er nødvendig for filtrering, mode
valgfritt argument gir ekstra utvalget evner, ognumberToReturn
valgfritt argument lar evne til å begrense hvor mange itemsare returnert fra filteret.,p>Den akseptable verdier for mode
er:
- Standard (0) – Returnere alle elementene
- Første (1) – gå Tilbake til første punkt
- Siste (2) – Retur siste elementet
- SkipUntil (3) – Hopp over elementer til condition er sann, den tilbake remainingitems
- Til (4) – Returnere alle elementene til condition er sann
- Split (5) – Returnerer en matrise av to elementer
- første element inneholder samsvarende elementer
- Det andre elementet inneholder de resterende elementene
følgende eksempel viser hvordan du velger alle odde tall fra tabellen.,
Dette eksemplet viser hvordan du velger de strenger som ikke er tom.
Standard
Default
mode filtre elementer ved hjelp av Expression
scriptblock.
Hvis en numberToReturn
er tilgjengelig, angir maksimalt antall itemsto tilbake.,
Merk
Begge Default
modus og First
modus returnere den første(numberToReturn
) elementer, og kan brukes om hverandre.
Siste
SkipUntil
SkipUntil
modus hopper over alle objekter i en samling til et objekt passesthe script blokkere uttrykk filter. Den går deretter tilbake ALLE gjenværende collectionitems uten å teste dem. Bare én passerer elementet er testet.
Dette betyr at de returnerte samlingen inneholder både passerer andnon-bestått elementer som IKKE er testet.,
antallet elementer som returneres kan være begrenset ved å sende en verdi tilnumberToReturn
argument.
Til
Until
modus inverterer SkipUntil
modus. Den returnerer ALLE poster i acollection til et element går skriptet blokkere uttrykk. Når en itempasses den scriptblock uttrykk, Where
metode stopper behandlingen elementer.
Dette betyr at du får det første sett av ikke-bestått elementer fraWhere
metode., Etter ett element som går, resten er IKKE testet eller returnert.
antallet elementer som returneres kan være begrenset ved å sende en verdi tilnumberToReturn
argument.
Merk
Begge Until
og SkipUntil
operere under forutsetning av IKKE å teste en batchof elementer.
Until
returnerer varene FØR første pass.
SkipUntil
returnerer alle poster ETTER første pass, inkludert thefirst passerer element.,
Split
Split
modus deler, eller grupper samling elementene inn i to separatecollections. De som passerer scriptblock uttrykk, og de som ikke gjør det.
Hvis en numberToReturn
er angitt, første samling, inneholder thepassing elementer, for ikke å overskride den verdien som er angitt.
De resterende objektene, selv de som PASSERER uttrykk filter, arereturned i den andre samlingen.,
Få medlemmer av en matrise
for Å få de egenskapene og metodene i en matrise, som for eksempel Lengde eiendom andthe SetValue metode, bruk InputObject av parameteren Get-Member
cmdleten.
Når du pipe et utvalg til Get-Member
, PowerShell sender elementer oneat en tid og Get-Member
returnerer typen av hvert element i matrisen (ignoringduplicates).
Når du bruker InputObject parameter, Get-Member
returnerer medlemmer ofthe utvalg.,
For eksempel, følgende kommando får medlemmer av $a
arrayvariable.
Du kan også få medlemmer av en array ved å skrive inn et komma (,) før thevalue som er transportert til Get-Member
cmdleten. Komma gjør array thesecond element i en matrise av matriser. PowerShell rør den rekker en ata tid og Get-Member
returnerer medlemmer av utvalget. Som neste twoexamples.,
Manipulere en matrise
Du kan endre elementer i en matrise legge til et element til en matrise, andcombine verdier fra to tabeller i en tredje rekke.
Hvis du vil endre verdien i et bestemt element i en matrise, angi arrayname og indeksen for elementet som du vil endre, og bruk deretter theassignment operatøren (=
) for å angi en ny verdi for elementet., For eksempel,for å endre verdien av det andre elementet i $a
array (indeks posisjon 1) to10, skriv:
Du kan også bruke SetValue metode i en matrise for å endre en verdi. Thefollowing eksempel endringer i den andre verdi (indeks posisjon 1) $a
arrayto 500:
Du kan bruke +=
operatør for å legge til et element til en matrise. Den followingexample viser hvordan du kan legge til et element til $a
array.,
Merk
Når du bruker +=
operatør, PowerShell faktisk skaper en ny arraywith verdiene av den opprinnelige matrisen og den merverdi. Dette mightcause ytelse hvis operasjonen gjentas flere ganger eller størrelsen på matrisen er for stor.
Det er ikke lett å slette elementer fra en tabell, men du kan opprette en newarray som bare inneholder utvalgte elementer av en eksisterende matrise., For eksempel,for å skape $t
array med alle elementene i $a
array med unntak for thevalue på indeksen posisjon 2, skriv:
for Å slå sammen to matriser til en enkelt matrise, bruk pluss-operatør (+
). Thefollowing eksempel oppretter to matriser, kombinerer dem, og deretter viser theresulting kombinert utvalg.
Som et resultat, $z
array inneholder 1, 3, 5 og 9.,
for Å slette en tabell, kan du angi en verdi av $null
array. Den followingcommand sletter utvalg i $a
variabel.
$a = $null
Du kan også bruke Remove-Item
cmdleten, men tilordne en verdi av $null
isfaster, spesielt for store matriser.
Matriser av null eller ett
Begynner i Windows PowerShell 3.0, en samling av null eller ett objekt hasthe antall og Lengde eiendom. Du kan også indeksen til en rekke oneobject., Denne funksjonen hjelper deg til å unngå scripting feil som kan oppstå når acommand som forventer en samling blir færre enn to elementer.
følgende eksempler viser denne funksjonen.
Null objekter
Ett objekt
Indeksering støtte for Systemet.Tuple objekter
PowerShell 6.1 lagt til støtte for indeksert tilgang til Tuple objekter tilsvarende til matriser.,For eksempel:
i Motsetning til matriser og andre samling objekter, Tuple objekter behandles som asingle objekt når gått gjennom rørledning eller ved hjelp av parametre som supportarrays av objekter.
For mer informasjon, se System.Tuple.
Se også:
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While