About Arrays

0 Comments
  • 08/26/2020
  • 14 minut do odczytu
    • S
    • s
    • i c

krótki opis

opisuje tablice, które są strukturami danych zaprojektowanymi do przechowywania kolekcji elementów.

długi opis

tablica jest strukturą danych przeznaczoną do przechowywania kolekcji elementów.Elementy mogą być tego samego typu lub różnych typów.

począwszy od Windows PowerShell 3.,0, zbiór zero lub jeden obiekt ma właściwości tablic.

Tworzenie i inicjalizacja tablicy

aby utworzyć i inicjalizować tablicę, Przypisz wiele wartości do zmiennej. Wartości zapisane w tablicy są rozdzielane przecinkiem i oddzielane od zmiennej nazwy operatorem przypisania (=).,

na przykład, aby utworzyć tablicę o nazwie $A zawierającą siedem liczbowych (int)wartości 22, 5, 10, 8, 12, 9, and 80, type:

przecinek może być również użyty do zainicjowania tablicy pojedynczej pozycji przez umieszczenie comma przed pojedynczą pozycją.

na przykład, aby utworzyć tablicę pojedynczych elementów o nazwie $B zawierającą pojedynczą wartość 7, wpisz:

można również utworzyć i zainicjalizować tablicę za pomocą operatora zakresu (..).,Poniższy przykład tworzy tablicę zawierającą wartości od 5 do 8.

w rezultacie$C zawiera cztery wartości: 5, 6, 7 i 8.

Gdy Nie podano typu danych, PowerShell tworzy każdą tablicę jako objectarray (System.Obiekt). Aby określić typ danych tablicy, należy użyć metody GetType ()., Na przykład, aby określić typ danych tablicy $A, wpisz:

aby utworzyć silnie wpisaną tablicę, czyli tablicę, która może zawierać tylko wartości określonego typu, podaj zmienną jako typ tablicy, taki jak asstring, long lub int32. Aby utworzyć tablicę, należy poprzedzić zmienną nazwę typem tablicy umieszczonym w nawiasach., Na przykład, aby utworzyć 32-bitową tablicę całkowitą o nazwie $ia zawierającą cztery liczby całkowite (1500, 2230, 3350 i 4000), wpisz:

w rezultacie tablica $ia może zawiera tylko liczby całkowite.

można tworzyć tablice, które są rzutowane na dowolny obsługiwany typ w Microsoft.NET ramy. Na przykład obiekty, które Get-Process pobierają reprezentowane procesy, należą do systemu.Diagnostyka.Typ procesu., Aby wytworzyć odpowiednio wpisaną tablicę obiektów procesu, należy wprowadzić następujące polecenie:

Operator pod-wyrażenia array

Operator pod-wyrażenia array tworzy tablicę z instrukcji insideit. Niezależnie od instrukcji wewnątrz operatora, operator umieści ją w tablicy. Nawet jeśli istnieje zero lub jeden obiekt.

składnia operatora tablicy jest następująca:

możesz użyć operatora tablicy do utworzenia tablicy zawierającej zero lub jeden obiekt., Przykład:

operator tablicy jest przydatny w skryptach, gdy otrzymujesz obiekty, ale nie wiesz, ile masz obiektów. Na przykład:

aby uzyskać więcej informacji o operatorze pod-wyrażenia array, zobaczabout_operators.

dostęp do tablicy i korzystanie z niej

odczyt tablicy

można odwoływać się do tablicy używając jej nazwy zmiennej. Aby wyświetlić wszystkie elementy tablicy, wpisz nazwę tablicy., Na przykład, zakładając $a jest tablicą zawierającą liczby całkowite 0, 1, 2, aż do 9; wpisując:

możesz odwoływać się do elementów w tablicy, używając indeksu, rozpoczynającego się od pozycji 0. W nawiasach należy podać numer indeksu., Na przykład, aby wyświetlić pierwszy element w tablicy $a, wpisz:

aby wyświetlić trzeci element w tablicy $a, wpisz:

możesz pobrać część tablicy używając operatora zakresu dla indeksu. Na przykład, aby pobrać od drugiego do piątego elementu tablicy, należy wpisać:

liczby ujemne liczą się od końca tablicy., Na przykład „-1” odnosi się do ostatniego elementu tablicy. Aby wyświetlić trzy ostatnie elementy thearray, w porządku rosnącym indeksu, wpisz:

Jeśli wpiszesz indeksy ujemne w porządku malejącym, Twój wynik zmieni się.

należy jednak zachować ostrożność podczas używania tej notacji. Cykle notacji od granicy do początku tablicy.,

możesz użyć operatora plus (+), aby połączyć zakresy z listą elementów w tablicy. Na przykład, aby wyświetlić elementy w pozycjach indeksowych 0, 2 i 4 do 6, wpisz:

również, aby wyświetlić wiele zakresów i poszczególnych elementów można użyć plusoperator., Na przykład, aby wyświetlić listę elementów od zera do dwóch, od czterech do sześciu, aelement na ósmej pozycji:

iteracji elementów tablicy

można również użyć pętli pętli, takich jak pętle ForEach, For I While, aby oddzielić elementy w tablicy. Na przykład, aby użyć pętli ForEach do wyświetlenia elementów w tablicy $a, wpisz:

pętla Foreach iteruje przez tablicę i zwraca każdą wartość w tablicy, aż do osiągnięcia końca tablicy.,

pętla For jest przydatna podczas zwiększania liczników podczas badania elementów w tablicy. Na przykład, aby użyć pętli For do zwrócenia każdej innej wartości w tablicy, wpisz:

możesz użyć pętli While do wyświetlenia elementów w tablicy, dopóki zdefiniowana klauzula nie przestanie być prawdziwa., Na przykład, aby wyświetlić elementy w tablicy $a, gdy indeks tablicy jest mniejszy niż 4, Wpisz:

właściwości tablic

Count or Length or LongLength

aby określić, ile elementów znajduje się w tablicy, użyj właściwości Length lub jej aliasuCount. Longlength jest przydatne, jeśli tablica zawiera więcej niż 2,147,483,647 elementów.

Ranga

Zwraca liczbę wymiarów w tablicy., Większość tablic w PowerShell ma tylko jeden wymiar. Nawet jeśli wydaje ci się, że budujesz wielowymiarową tablicę; jak w poniższym przykładzie:

poniższy przykład pokazuje, jak stworzyć prawdziwie wielowymiarową tablicę przy użyciu.Net Framework.

metody tablic

Wyczyść

ustawia wszystkie wartości elementu na domyślną wartość typu tablicy”s element.Metoda Clear () nie resetuje rozmiaru tablicy.,

w poniższym przykładzie $a jest tablicą obiektów.

w tym przykładzie$intA jest jawnie wpisany, aby zawierał liczby całkowite.

ForEach

umożliwia iterację wszystkich elementów tablicy i wykonanie danej operacji dla każdego elementu tablicy.

metoda ForEach ma kilka przeciążeń, które wykonują różne operacje.,

ForEach(wyrażenie scriptblock)

ForEach(wyrażenie scriptblock, argumenty obiektu)

ta metoda została dodana w PowerShell v4.

Uwaga

składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli jedynym parametrem jest blok scriptblock. Ponadto nie może istnieć spacja między metodą a nawiasem otwierającym lub nawiasem klamrowym.

poniższy przykład pokazuje, jak korzystać z metody foreach. W tym przypadku theintent ma wygenerować wartość kwadratową elementów w tablicy.,

podobnie jak -ArgumentList parametr ForEach-Object, argumentsparametr pozwala na przekazywanie tablicy argumentów do bloku skryptu skonfigurowanego do ich akceptacji.

aby uzyskać więcej informacji na temat zachowania ArgumentList, zobaczabout_splatting.,

ForEach(Typ convertToType)

metodaForEach może być używana do szybkiego przerzucania elementów na inny typ; poniższy przykład pokazuje, jak przekonwertować listę dat łańcuchów na typ.

ForEach(string propertyName)

ForEach(string propertyName, object newValue)

ForEach metoda może być również używana do szybkiego pobierania lub ustawiania wartości właściwości dla każdego elementu w kolekcji.,

ForEach(string methodName)

ForEach(string methodName, object arguments)

wreszcie,ForEach metody mogą być użyte do wykonania metody na każdym elemencie w kolekcji.

podobnie jak -ArgumentList parametr ForEach-Object, argumentsparametr pozwala na przekazywanie tablicy argumentów do bloku skryptu skonfigurowanego do ich akceptacji.

Uwaga

uruchamianie w Windows PowerShell 3.,0 pobieranie właściwości i wykonywanie methods dla każdego elementu w kolekcji można również wykonać za pomocą „Methodsof scalar objects and collections” więcej na ten temat można przeczytać tutaj.

gdzie

umożliwia filtrowanie lub zaznaczanie elementów tablicy. Skrypt musi oceniać cokolwiek innego niż: zero (0), pusty łańcuch, $false lub $null aby element wyświetlał się po Where

istnieje jedna definicja Where metoda.,

Uwaga

składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli jedynym parametrem jest blok scriptblock. Ponadto nie może istnieć spacja między metodą a nawiasem otwierającym lub nawiasem klamrowym.

Expressionjest blokiem skryptów, który jest wymagany do filtrowania, modeopcjonalny argument umożliwia dodatkowe możliwości wyboru, anumberToReturn opcjonalny argument pozwala ograniczyć liczbę elementów zwracanych z filtra.,p>akceptowalnymi wartościami dla mode są:

  • Default (0) – zwraca wszystkie elementy
  • First (1) – zwraca pierwszą pozycję
  • Last (2) – zwraca ostatnią pozycję
  • SkipUntil (3) – pomija elementy do momentu spełnienia warunku, zwraca pozostałe elementy
  • Until (4) – zwraca wszystkie elementy do warunek jest true
  • Split (5) – zwraca tablicę dwóch elementów
    • pierwszy element zawiera pasujące elementy
    • drugi element zawiera pozostałe elementy

poniższy przykład pokazuje, jak wybrać wszystkie nieparzyste liczby z tablicy.,

Ten przykład pokazuje, jak wybrać ciągi znaków, które nie są puste.

domyślnie

Default tryb filtruje elementy za pomocą bloku skryptowegoExpression.

Jeśli podanonumberToReturn, określa maksymalną liczbę elementów, które zostaną zwrócone.,

Uwaga

zarównoDefault orazFirst zwracają pierwsze (numberToReturn) elementy i mogą być używane zamiennie.

Last

SkipUntil

trybSkipUntil pomija wszystkie obiekty w kolekcji, dopóki obiekt nie przejdzie przez filtr wyrażenia bloku skryptu. Następnie zwraca wszystkie pozostałe elementy kolekcji bez ich testowania. Testowany jest tylko jeden element przechodzący.

oznacza to, że zwracana Kolekcja zawiera zarówno elementy przechodzące, jak i nie przechodzące, które nie zostały przetestowane.,

Liczba zwracanych pozycji może być ograniczona przez przekazanie wartości do argumentunumberToReturn.

dopóki

Until tryb odwracaSkipUntil tryb. Zwraca wszystkie pozycje wkolekcji, dopóki element nie przekaże wyrażenia blokującego skrypt. Gdy itempasses the scriptblock expression,Where metoda zatrzymuje przetwarzanie elementów.

oznacza to, że otrzymujesz pierwszy zestaw nie przechodzących elementów z metodyWhere., Po przejściu jednego przedmiotu, reszta nie jest testowana lub zwracana.

Liczba zwracanych pozycji może być ograniczona przez przekazanie wartości do argumentunumberToReturn.

Uwaga

zarównoUntil, jak iSkipUntil działają zgodnie z założeniem, że nie testują elementów pakietu.

Until zwraca pozycje przed pierwszym przejściem.

SkipUntil zwraca wszystkie pozycje po pierwszym przejściu, łącznie z pierwszym przejściem.,

podziel

trybSplit dzieli lub grupuje elementy kolekcji na dwie oddzielne Kolekcje. Ci, którzy przechodzą przez wyrażenie blokujące Skrypty, a ci, którzy nie.

Jeśli podano numberToReturn, to pierwsza kolekcja zawiera elementy, które nie przekraczają podanej wartości.

pozostałe obiekty, nawet te, które przechodzą przez filtr wyrażenia, znajdują się w drugiej kolekcji.,

pobieranie elementów tablicy

aby uzyskać właściwości i metody tablicy, takie jak właściwość Length i metoda SetValue, użyj parametru InputObjectGet-Membercmdlet.

gdy ustawisz tablicę na Get-Member, PowerShell wysyła elementy po jednym czasie i Get-Member zwraca typ każdej pozycji w tablicy (ignoringduplikates).

gdy używasz parametru InputObject,Get-Member zwraca elementy tablicy.,

na przykład, następujące polecenie pobiera członków $a arrayvariable.

można również uzyskać elementy tablicy, wpisując przecinek (,) przed wartością, która jest przekazywana doGet-Member cmdlet. Przecinek sprawia, że tablica thesecond pozycja w tablicy tablic. PowerShell wyprowadza tablice jeden raz, a Get-Member zwraca elementy tablicy. Jak następne dwa przykłady.,

manipulowanie tablicą

można zmieniać elementy w tablicy, dodawać elementy do tablicy i łączyć wartości z dwóch tablic w trzecią tablicę.

aby zmienić wartość konkretnego elementu w tablicy, określ nazwę tablicy i indeks elementu, który chcesz zmienić, a następnie użyj operatora assignment (=), aby określić nową wartość dla elementu., Na przykład, aby zmienić wartość drugiej pozycji w tablicy $a array (pozycja indeksu 1) to10, wpisz:

można również użyć metody SetValue tablicy do zmiany wartości. Następujący przykład zmienia drugą wartość (pozycja indeksu 1) $a arrayto 500:

możesz użyć operatora += aby dodać element do tablicy. Poniższy przykład pokazuje, jak dodać element do tablicy$a.,

Uwaga

Gdy używasz operatora+=, PowerShell tworzy nową tablicę z wartościami oryginalnej tablicy i wartością dodaną. Może to powodować problemy z wydajnością, jeśli operacja zostanie powtórzona kilka razy lub rozmiar tablicy jest zbyt duży.

nie jest łatwo usunąć elementy z tablicy, ale można utworzyć newarray, który zawiera tylko wybrane elementy istniejącej tablicy., Na przykład,aby utworzyć tablicę $t ze wszystkimi elementami w tablicy $a z wyjątkiem wartości na pozycji indeksu 2, wpisz:

aby połączyć dwie tablice w jedną tablicę, użyj operatora plus (+). Następny przykład tworzy dwie tablice, łączy je, a następnie wyświetla kombinowaną tablicę.

w rezultacie tablica$z zawiera 1, 3, 5 i 9.,

aby usunąć tablicę, Przypisz do tablicy wartość $null. Następująca Komenda usuwa tablicę w zmiennej $a.

$a = $null

Możesz również użyć Remove-Itemcmdlet, ale przypisując wartość $null isfaster, szczególnie dla dużych tablic.

Tablice zera lub jedynki

począwszy od Windows PowerShell 3.0, zbiór obiektów zero lub jedynki ma właściwość Count i Length. Możesz również indeksować do tablicy oneobject., Ta funkcja pomaga uniknąć błędów skryptowych, które występują, gdy polecenie oczekujące kolekcji otrzyma mniej niż dwa elementy.

poniższe przykłady pokazują tę funkcję.

Zero obiektów

jeden obiekt

Obsługa indeksowania systemu.Obiekty Tuple

PowerShell 6.1 dodał obsługę indeksowanego dostępu obiektów Tuple, podobnie jak tablice.,Na przykład:

w przeciwieństwie do tablic i innych obiektów kolekcji, Obiekty krotki są traktowane jako jeden obiekt, gdy są przekazywane przez rurociąg lub przez parametry obsługujące obrazy obiektów.

aby uzyskać więcej informacji, zobacz System.Tuple.

patrz również

  • o_assignment_operators
  • o_hash_tables
  • o_operators
  • o_for
  • o_for
  • o_for
  • o_for
  • o_for
  • o_for


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *