A Tömbök
- 08/26/2020
- 14 perc olvasni
-
- S
- s
- c
Rövid Leírás
Leírja, tömbök, amelyek adatszerkezetek célja, hogy storecollections elemeket.
Hosszú leírás
egy tömb olyan adatstruktúra, amelyet elemek gyűjteményének tárolására terveztek.Az elemek lehetnek azonos vagy különböző típusok.
kezdve a Windows PowerShell 3.,0, nulla vagy egy objektum gyűjteménye vana tömbök bizonyos tulajdonságai.
tömb létrehozása és inicializálása
egy tömb létrehozásához és inicializálásához rendeljen több értéket egy változóhoz. A tömbben tárolt értékek vesszővel vannak határolva, és a hozzárendelés operátor (=
) választja el a megváltoztatható névtől.,
például egy $A
nevű tömb létrehozásához, amely a következő hét numerikus (int)értéket tartalmazza 22, 5, 10, 8, 12, 9, és 80, type:
a vessző is lehet használni, hogy inicializálja egy elem tömb azáltal thecomma előtt egyetlen elemet.
például egy $B
nevű elemtömb létrehozásához, amely tartalmazza a 7-es egyedi értéket, típus:
egy tömböt is létrehozhat és inicializálhat a tartomány operátor segítségével (..
).,A következő példa egy tömböt hoz létre, amely az 5-8 értékeket tartalmazza.
ennek eredményeként $C
négy értéket tartalmaz: 5, 6, 7 és 8.
ha nincs megadva adattípus, a PowerShell minden tömböt objektumként (rendszerként) hoz létre.Tárgy). A tömb adattípusának meghatározásához használja akettype () módszer., Például a $A
tömb adattípusának meghatározásához írja be:
egy erősen gépelt tömb létrehozásához, azaz egy olyan tömb, amely csak egy adott típusú értéket tartalmazhat, a változót tömb típusként, például asstring, long vagy int32. Egy tömb leadásához előzze meg aváltoztatható név zárójelbe zárt tömb típussal., Például a $ia
négy egész számot (1500, 2230, 3350 és 4000) tartalmazó A32 bites egész tömb létrehozásához írja be:
ennek eredményeként a$ia
tömb csak egész számok.
létrehozhat tömbök, amelyek öntött bármilyen támogatott típusú a Microsoft.NET keret. Például az objektumok, hogy a Get-Process
lekéri torepresent folyamatok a Rendszer.Diagnosztika.Folyamat típusa., Hozzon létre astrongly gépelt sor folyamat tárgyak, írja be a következő parancsot:
A tömb al-kifejezés üzemeltető
A tömb al-kifejezés üzemeltető létrehoz egy tömböt a nyilatkozatok insideit. Bármi legyen is az operátoron belüli kijelentés, az operátor leszhelyezze azt egy tömbbe. Még akkor is, ha nulla vagy egy objektum van.
a tömb operátor szintaxisa a következő:
használhatja a tömb operátort nulla vagy egy objektum tömbjének létrehozásához., Forexample:
az array operátor hasznos szkriptekben, ha objektumokat használ, de nem tudja, hány objektumot kap. Például:
További információ a tömb al-kifejezés operátor, seeabout_Operators.
tömbelemek elérése és használata
tömb olvasása
egy tömbre hivatkozhat a változó neve használatával. A tömb összes elemének megjelenítéséhez írja be a tömb nevét., Például, feltételezve, hogy a$a
olyan anarray, amely 0, 1, 2 egészeket tartalmaz 9-ig; gépelés:
hivatkozhat egy tömb elemeire egy index használatával, a 0.pozíciótól kezdve. Zárójelben csatolja az indexszámot., Például a $a
tömb első elemének megjelenítéséhez típus:
a harmadik elem megjelenítéséhez a $a
tömb, típus: p>
a tömb egy részét az index tartomány operátorával lehet letölteni. Forexample, hogy letölteni a második-ötödik elem a tömb, akkortype:
negatív számok számítanak a végén a tömb., Például a” -1 ” utala tömb utolsó eleme. Az index utolsó három elemének megjelenítéséhez növekvő sorrendben írja be:
ha csökkenő sorrendben írja be a negatív indexeket, a kimenet megváltozik.
azonban legyen óvatos, ha ezt a jelölést használja. A jelölési ciklusok a véghatártól a tömb elejéig.,
használhatja a plusz operátort (+
), hogy kombináljon egy tartományt az elemek listájávalegy tömbben. Például, ha az elemeket 0, 2, and4-6 indexpozíciókban szeretné megjeleníteni, írja be:
Több tartomány és egyedi elem felsorolásához használhatja a plusoperátort is., Például, hogy a lista elemei nulla-kettő, négy, hat, illetve theelement a nyolcadik helyzeti típus:
Ismétlések át tömb elemek
használhatja hurok konstrukciók, mint a ForEach, A, Míg hurkok, torefer, hogy az elemek tömbje. Például, hogy egy ForEach hurok todisplay az elemek a $a
tömb, típus:
az Előfolyam hurok végighalad a tömbben, és visszatér minden értéket a tömb végéig.,
A For hurok akkor hasznos, ha a számlálókat egy tömb elemeinek vizsgálata közben növeli. Például, ha a For loop-ot használ minden más visszatéréshezérték egy tömbben, írja be:
használhatja a While loop-ot az elemek megjelenítéséhez egy tömbben, amíg a definedcondition már nem igaz., Például a $a
tömb elemeinek megjelenítéséhez, míg a tömb indexe kevesebb, mint 4, típus:
tömbök tulajdonságai
szám vagy hossz vagy LongLength
annak meghatározásához, hogy hány elem van egy tömbben, használja a Length
tulajdonságot vagy annakCount
álnevét. Longlength
akkor hasznos,ha a tömb több mint2,147,483, 647 elemet tartalmaz.
Rank
visszaadja a tömb méreteinek számát., A PowerShell legtöbb tömbje rendelkezikegy dimenzió, csak. Még akkor is, ha úgy gondolja, hogy multidimensionalarray-t épít; mint a következő példa:
a következő példa bemutatja, hogyan lehet létrehozni egy valóban többdimenziós tömböt a.Net keretrendszer használatával.
tömbök metódusai
Clear
az összes elemértéket az ” S ” elemtípus alapértelmezett értékére állítja.A Clear () módszer nem állítja vissza a tömb méretét.,
a következő példában $a
egy sor objektum.
ebben a példában a $intA
egészeket tartalmaz.
ForEach
lehetővé teszi a tömb összes elemének iterálását és egy adott művelet végrehajtását a tömb minden elemére.
a ForEach módszernek több túlterhelése van, amelyek különböző műveleteket hajtanak végre.,
ForEach(scriptblock expression)
ForEach (scriptblock expression, object arguments)
ezt a módszert a PowerShell v4-ben adták hozzá.
Megjegyzés
a szintaxishoz szkriptblokk használata szükséges. A zárójelek opcionálisak, haa scriptblock az egyetlen paraméter. Ezenkívül nem lehet szóköz a módszer és a nyitó zárójel vagy zárójel között.
a következő példa bemutatja, hogyan kell használni a foreach módszert. Ebben az esetben az inintent a tömbben lévő elemek négyzetértékének generálása.,
csakúgy, mint a -ArgumentList
paraméter ForEach-Object
, a arguments
paraméter lehetővé teszi az áthaladást egy sor érv egy szkriptblokkhozkonfigurálva, hogy elfogadja őket.
További információ a viselkedését ArgumentList, seeabout_Splatting.,
ForEach(type convertToType)
The ForEach
metódus használható, hogy gyorsan leadott az elemeket egy másiktípusba; a következő példa azt mutatja, hogyan lehet átalakítani egy listát a string dátumokat type.
ForEach(string propertyName)
ForEach(string propertyName, object newValue)
a ForEach
módszer is használható, hogy gyorsan letölteni, vagy állítsa propertyvalues minden elem a gyűjteményben.,
ForEach(string methodName)
ForEach(string methodName, object arguments)
végül ForEach
methods lehet használni, hogy végre egy módszert minden elem inthe gyűjtemény.
csakúgy, mint a -ArgumentList
ForEach-Object
paraméter, a arguments
paraméter lehetővé teszi az áthaladást egy sor érv egy szkriptblokkhozkonfigurálva, hogy elfogadja őket.
Megjegyzés
kezdve a Windows PowerShell 3.,0 a tulajdonságok lekérdezése és a végrehajtásmódszerek a gyűjtemény minden egyes eleméhez a “Methodsof Skalar objects and collections” segítségével is elvégezhetők, erről bővebben itt olvashat hereabout_methods.
ahol
lehetővé teszi a tömb elemeinek szűrését vagy kiválasztását. A szkriptnek bármi mást kell értékelnie, mint: nulla (0), üres karakterlánc, $false
vagy $null
a Where
Where
módszer.,
Megjegyzés
a szintaxishoz szkriptblokk használata szükséges. A zárójelek opcionálisak, haa scriptblock az egyetlen paraméter. Ezenkívül nem lehet szóköz a módszer és a nyitó zárójel vagy zárójel között.
The Expression
is scriptblock that is required for filtering, the mode
opcionális argumentum lehetővé teszi a további kiválasztási képességek, és anumberToReturn
opcionális argumentum lehetővé teszi, hogy korlátozza, hogy hány itemsare vissza a szűrőből.,p>Az elfogadható értékek mode
vagy:
- Alapértelmezett (0) – Vissza az összes elem
- Első (1) – Visszatérés az első elem
- Utolsó (2) – Visszatérés az utolsó elem
- SkipUntil (3) – Ugrás az elemeket, amíg a feltétel igaz, a vissza a remainingitems
- , Amíg a (4) – Vissza az összes elem, amíg a feltétel igaz,
- Split (5) – Vissza egy sor két elem
- első elem tartalmaz megfelelő elem
- második elem tartalmaz, a többi elem
A következő példa azt mutatja be, hogyan válasszuk ki minden páratlan számok a tömb.,
Ez a példa megmutatja, hogyan kell kiválasztani a nem üres karakterláncokat.
Default
The Default
mode filters items using the Expression
scriptblock.
Ha a numberToReturn
van megadva, akkor megadja a tételek maximális számátvisszatérésre.,
Megjegyzés
mind aDefault
mód és First
mód visszaadja az első(numberToReturn
) elemet, és felcserélhető módon használható.
Last
SkipUntil
The SkipUntil
mód kihagyja az összes objektumot a gyűjteményben, amíg egy objektum át nem lépa szkriptblokk kifejezésszűrő. Ezután visszaadja az összes fennmaradó gyűjteménytelemeket tesztelés nélkül. Csak egy elhaladó elemet tesztelnek.
Ez azt jelenti, hogy a visszaküldött gyűjtemény mind elhaladó, mind pedig nem tesztelt elemeket tartalmaz.,
a visszaküldött tételek száma korlátozható úgy, hogy egy értéket anumberToReturn
argumentumra továbbítunk.
ig
a Until
mód megfordítja a SkipUntil
módot. Az acollection összes elemét visszaadja, amíg egy elem át nem adja a szkriptblokk kifejezést. Ha egy elem átmegy a scriptblock kifejezésen, aWhere
módszer leállítja az elemek feldolgozását.
Ez azt jelenti, hogy aWhere
metódusból kapja meg az első nem áthaladó elemeket., Miután egy elem elhalad, a többit nem tesztelik vagy visszaküldik.
a visszaküldött tételek száma korlátozható úgy, hogy egy értéket anumberToReturn
argumentumra továbbítunk.
Megjegyzés
Both Until
és SkipUntil
a tételek tesztelésének elmulasztása mellett működik.
Until
visszaadja az elemeket az első lépés előtt.
SkipUntil
visszaadja az összes elemet az első lépés után, beleértve aElőször elhaladó elemet.,
Split
The Split
mode splits, or groups collection items into two separatecollections. Azok, akik átmennek a scriptblock kifejezésen, és azok, akik nem.
Ha anumberToReturn
meg van adva, akkor az első gyűjtemény tartalmazza a megadott értéket.
a fennmaradó objektumok, még azok is, amelyek áthaladnak a kifejezésszűrőn, felmerülneka második gyűjteményben.,
Szerezd meg a tagok egy tömb
ahhoz, hogy a tulajdonságok és módszerek egy tömb, mint például a hossz tulajdonság és SetValue módszer, használja a InputObject paramétere a Get-Member
cmdlet.
Ha egy tömbötGet-Member
– ra pipál, a PowerShell egy időben elküldi az elemeket, aGet-Member
visszaadja a tömb minden elemének típusát (ignoringduplicates).
az InputObject paraméter használatakor a Get-Member
visszaadja a tömb tagjait.,
például a következő parancs kapja a $a
arrayvariable tagjait.
egy tömb tagjait is megkaphatja, ha vesszőt (,) ír be a Get-Member
cmdlet. A vessző teszi a tömb thesecond elem egy tömb tömbök. PowerShell csövek a tömbök egy ata időben Get-Member
visszaadja a tömb tagjai. Mint a következő kétpéldák.,
egy tömb manipulálása
megváltoztathatja az elemeket egy tömbben, hozzáadhat egy elemet egy tömbhöz, éskombinálja az értékeket két tömbből egy harmadik tömbbe.
egy tömb egy adott elemének értékének megváltoztatásához adja meg a módosítani kívánt elem tömbnevét és indexét, majd használja aaz osztályozó operátort (=
) az elem új értékének megadásához., Például a $a
array (indexpozíció 1) TO10 második elemének értékének megváltoztatásához írja be:
egy tömb SetValue metódusát is használhatja egy érték megváltoztatásához. A következő példa megváltoztatja a $a
arrayto 500 második értékét (indexpozíció 1):
a +=
operátort használhatja egy elem hozzáadásához egy tömbhöz. A következő példa bemutatja, hogyan adhat hozzá egy elemet a$a
tömbhöz.,
Megjegyzés
a +=
operátor használatakor a PowerShell valójában új tömböt hoz létre az eredeti tömb értékeivel és a hozzáadott értékkel. Ez a teljesítményproblémákat okoz, ha a műveletet többször megismételik, vagya tömb mérete túl nagy.
nem könnyű törölni az elemeket egy tömbből, de létrehozhat egy newarray-t, amely csak egy meglévő tömb kiválasztott elemeit tartalmazza., Például,hogy hozzon létre a $t
array minden elem a $a
array kivéve értékét az index pozíció 2, típus:
, Hogy összekapcsolják a két tömb egyetlen tömb, használja a plusz üzemeltető (+
). Thefollowing példa létrehoz két tömbök, egyesíti őket, majd megjeleníti theresulting kombinált tömb.
ennek eredményeként a $z
tömb 1, 3, 5 és 9.,
egy tömb törléséhez rendeljen hozzá egy $null
értéket a tömbhöz. A followingcommand törli a tömböt a $a
változóban.
$a = $null
használhatja a Remove-Item
cmdlet értéket is, de hozzárendelheti a $null
isfaster értéket, különösen nagy tömbök esetében.
nulla vagy egy
tömbök kezdve a Windows PowerShell 3.0-ban, egy nulla vagy egy objektum gyűjteménye rendelkezika szám és Hossz tulajdonság. Is, akkor indexelni egy tömb egyobjektumot., Ez a funkció segít elkerülni scripting hibák fordulnak elő, amikor acommand, hogy elvárja a gyűjtemény lesz kevesebb, mint két elem.
a következő példák mutatják ezt a funkciót.
zero objects
egy objektum
Indexing support for System.Tuple objects
PowerShell 6.1 hozzáadta a tuple objektumok indexelt hozzáférésének támogatását, hasonlóan a tömbökhöz.,Például:
Ellentétben tömböket, illetve egyéb gyűjtemény tárgyak, Tuple tárgyak kezelik, mint egy tárgyat, amikor áthaladt a vezeték vagy a paraméterek supportarrays tárgyak.
további információkért lásd: rendszer.Tuple.
Lásd még:
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach