Sulle Matrici

0 Comments
  • 08/26/2020
  • 14 minuti a leggere
    • c

Breve Descrizione

Descrive le matrici, che sono strutture di dati progettato per storecollections di elementi.

Descrizione lunga

Un array è una struttura dati progettata per memorizzare una raccolta di elementi.Gli articoli possono essere dello stesso tipo o di tipi diversi.

A partire da Windows PowerShell 3.,0, una raccolta di zero o un oggetto haalcune proprietà di array.

Creazione e inizializzazione di un array

Per creare e inizializzare un array, assegnare più valori a una variabile. I valori memorizzati nell’array sono delimitati da una virgola e separati dal nome variabile dall’operatore di assegnazione (=).,

Ad esempio, per creare un array denominato $A che contiene i sette valori numerici (int) di 22, 5, 10, 8, 12, 9, e 80, digitare:

La virgola può anche essere utilizzata per inizializzare un singolo array di elementi posizionando thecomma prima del singolo elemento.

Ad esempio, per creare un singolo array di elementi denominato$B contenente il valore singolo di 7, digitare:

È anche possibile creare e inizializzare un array utilizzando l’operatore range (..).,L’esempio seguente crea un array contenente i valori da 5 a 8.

Di conseguenza,$C contiene quattro valori: 5, 6, 7 e 8.

Quando non viene specificato alcun tipo di dati, PowerShell crea ogni array come objectarray (System.Oggetto). Per determinare il tipo di dati di un array, utilizzare il metodo Gettype ()., Ad esempio, per determinare il tipo di dati dell’array $A, digitare:

Per creare un array fortemente tipizzato, ovvero un array che può contenere solovalori di un particolare tipo, lanciare la variabile come tipo di array, come string, long o int32. Per lanciare un array, precedere ilnome variabile con un tipo di array racchiuso tra parentesi., Ad esempio, per creare un array intero a32 bit denominato$ia contenente quattro numeri interi (1500, 2230, 3350 e 4000), digitare:

Di conseguenza, l’array$ia può contenere solo interi.

È possibile creare array che vengono trasmessi a qualsiasi tipo supportato Microsoft.NET Quadro. Ad esempio, gli oggetti che Get-Process recupera i processi presenti sono del Sistema.Diagnostica.Tipo di processo., Per creare un array di oggetti di processo fortemente tipizzato, immettere il seguente comando:

L’operatore di sottoespressione dell’array

L’operatore di sottoespressione dell’array crea un array dalle istruzioni all’internoit. Qualunque sia l’istruzione all’interno dell’operatore, l’operatore lo posizionerà in un array. Anche se c’è zero o un oggetto.

La sintassi dell’operatore array è la seguente:

È possibile utilizzare l’operatore array per creare un array di zero o un oggetto., Per esempio:

L’operatore array è utile negli script quando si ottengono oggetti, ma non si sa quanti oggetti si ottengono. Ad esempio:

Per ulteriori informazioni sull’operatore di sottoespressione dell’array, vedere About_operators.

Accesso e utilizzo degli elementi dell’array

Lettura di un array

È possibile fare riferimento a un array utilizzando il suo nome di variabile. Per visualizzare tutti gli elementi nell’array, digitare il nome dell’array., Ad esempio, supponendo che $a sia un anarray contenente interi 0, 1, 2, fino a 9; digitando:

È possibile fare riferimento agli elementi di un array utilizzando un indice, a partire dalla posizione 0. Racchiudere il numero di indice tra parentesi., Per esempio, per visualizzare primo elemento $a array, tipo:

Per visualizzare il terzo elemento $a array, tipo:

È possibile recuperare parte della matrice utilizzando un operatore di intervallo per l’indice. Ad esempio, per recuperare dal secondo al quinto elemento dell’array, si dovrebbe digitare:

I numeri negativi contano dalla fine dell’array., Ad esempio, “-1” si riferisce al’ultimo elemento dell’array. Per visualizzare gli ultimi tre elementi dell’array, in ordine crescente di indice, digitare:

Se si digita indici negativi in ordine decrescente, l’output cambia.

Tuttavia, fare attenzione quando si utilizza questa notazione. La notazione va dal confine finale all’inizio dell’array.,

È possibile utilizzare l’operatore plus (+) per combinare un intervallo con un elenco di elementi in un array. Ad esempio, per visualizzare gli elementi nelle posizioni dell’indice da 0, 2 e da 4 a 6, digitare:

Inoltre, per elencare più intervalli e singoli elementi è possibile utilizzare plusoperator., Ad esempio, per elencare gli elementi da zero a due, da quattro a sei e l’elemento all’ottavo tipo posizionale:

Iterazioni su elementi dell’array

È anche possibile utilizzare costrutti di loop, come ForEach, For e While loop, per accedere agli elementi di un array. Ad esempio, per utilizzare un ciclo ForEach per visualizzare gli elementi nell’array $a, digitare:

Il ciclo Foreach itera attraverso l’array e restituisce ogni valore nell’array fino a raggiungere la fine dell’array.,

Il ciclo For è utile quando si incrementano i contatori mentre si esaminano gli elementi in un array. Ad esempio, per utilizzare un ciclo For per restituire ogni altro valore in un array, digitare:

È possibile utilizzare un ciclo While per visualizzare gli elementi in un array fino a quando una condizione definita non è più vera., Per esempio, per visualizzare gli elementi nel $aarray, mentre l’indice dell’array è inferiore a 4, tipo:

Proprietà delle matrici

Conteggio o Lunghezza o LongLength

determinare il numero di elementi in un array, utilizzare il Length proprietàCount alias. Longlength è utile se l’array contiene più di2,147,483,647 elementi.

Rank

Restituisce il numero di dimensioni nell’array., La maggior parte degli array in PowerShell hannouna dimensione, solo. Anche quando pensi di costruire un multidimensionalarray; come il seguente esempio:

Il seguente esempio mostra come creare un array veramente multidimensionale usando.Net Framework.

Metodi di array

Cancella

Imposta tutti i valori degli elementi al valore predefinito del tipo di elemento dell’array.Il metodo Clear () non ripristina la dimensione dell’array.,

Nel seguente esempio $a è un array di oggetti.

In questo esempio,$intA viene esplicitamente digitato per contenere numeri interi.

ForEach

Permette di iterare su tutti gli elementi della matrice ed eseguire una data operationfor ogni elemento della matrice.

Il metodo ForEach ha diversi sovraccarichi che eseguono operazioni diverse.,

ForEach(scriptblock expression)

ForEach(scriptblock expression, object arguments)

Questo metodo è stato aggiunto in PowerShell v4.

Nota

La sintassi richiede l’uso di un blocco di script. Le parentesi sono facoltative ifthe scriptblock è l’unico parametro. Inoltre, non deve esserci uno spaziotra il metodo e la parentesi o la parentesi di apertura.

Il seguente esempio mostra come utilizzare il metodo foreach. In questo caso theintent è quello di generare il valore quadrato degli elementi nella matrice.,

Proprio come il -ArgumentList parametro ForEach-Object argumentsparametro consente il passaggio di un array di argomenti da uno script blockconfigured accettarli.

Per ulteriori informazioni sul comportamento di ArgumentList, vedere About_splatting.,

ForEach(type convertToType)

Il metodoForEach può essere utilizzato per lanciare rapidamente gli elementi in un differenttype; il seguente esempio mostra come convertire un elenco di date di stringa in tipo.

ForEach(string propertyName)

ForEach(string propertyName, oggetto newValue)

ForEach metodo può anche essere utilizzato per recuperare o impostare propertyvalues per ogni elemento della collezione.,

ForEach(string methodName)

ForEach(string methodName, object arguments)

Infine,ForEach i metodi possono essere utilizzati per eseguire un metodo su ogni elemento nella raccolta.

Proprio come il -ArgumentList parametro ForEach-Object argumentsparametro consente il passaggio di un array di argomenti da uno script blockconfigured accettarli.

Nota

A partire da Windows PowerShell 3.,0 il recupero delle proprietà e l’executingmethods per ogni elemento in una raccolta possono anche essere eseguiti utilizzando “Methodsof scalar objects and collections” Puoi leggere di più su questo qui about_methods.

Dove

Permette di filtrare o selezionare gli elementi della matrice. Lo script deve valutare qualcosa di diverso da: zero (0), stringa vuota, $false o $null perl’elemento da mostrare dopo Where

Esiste una definizione per Where metodo.,

Nota

La sintassi richiede l’uso di un blocco di script. Le parentesi sono facoltative ifthe scriptblock è l’unico parametro. Inoltre, non deve esserci uno spaziotra il metodo e la parentesi o la parentesi di apertura.

Expression è scriptblock che è necessario per il filtraggio, l’ modeargomento opzionale che consente la ulteriore capacità di selezione, e ilnumberToReturn argomento opzionale che consente la possibilità di limitare il numero di itemsare restituito dal filtro.,p>I valori accettabili per mode sono:

  • Default (0) – Restituire tutti gli articoli
  • Primo (1) – restituisce il primo elemento
  • Ultimo (2) – il Ritorno l’ultimo elemento
  • SkipUntil (3) – Ignorare gli elementi fino a quando la condizione è vera, il ritorno del remainingitems
  • Fino a (4) – Restituzione di tutti gli elementi fino a quando la condizione è vera
  • Split (5) – restituisce un array di due elementi
    • primo elemento contiene gli elementi corrispondenti
    • secondo elemento che contiene gli elementi rimanenti

L’esempio seguente viene illustrato come selezionare tutti i numeri dispari dall’array.,

Questo esempio mostra come selezionare le stringhe che non sono vuote.

Default

La modalitàDefaultfiltra gli elementi utilizzando ilExpression scriptblock.

Se viene fornito un numberToReturn, specifica il numero massimo di elementi da restituire.,

Nota

Sia la modalità Defaultche la modalitàFirstrestituiscono i primi elementi (numberToReturn) e possono essere usati in modo intercambiabile.

Last

SkipUntil

La modalità SkipUntil salta tutti gli oggetti in una raccolta fino a quando un oggetto non passa il filtro di espressione del blocco script. Restituisce quindi TUTTI i collectionitems rimanenti senza testarli. Solo un elemento di passaggio è testato.

Ciò significa che la raccolta restituita contiene sia elementi di passaggio che di non passaggio che non sono stati testati.,

Il numero di articoli restituiti può essere limitato passando un valore all’argomentonumberToReturn.

Fino a quando

La modalità Untilinverte la modalità SkipUntil. Restituisce TUTTI gli elementi in acollection finché un elemento non passa l’espressione del blocco di script. Una volta che un elemento supera l’espressione scriptblock, il metodo Where interrompe l’elaborazione degli elementi.

Ciò significa che si riceve il primo set di elementi non passing dalWhere metodo., Dopo che un articolo passa, il resto NON viene testato o restituito.

Il numero di articoli restituiti può essere limitato passando un valore all’argomentonumberToReturn.

Nota

Entrambi Untile SkipUntil operano sotto la premessa di NON testare un batchof elementi.

Until restituisce gli articoli PRIMA del primo passaggio.

SkipUntil restituisce tutti gli articoli DOPO il primo passaggio, incluso il primo passaggio.,

Dividi

La modalità Split divide o raggruppa gli elementi della raccolta in due raccolte separate. Quelli che passano l’espressione scriptblock e quelli che non lo fanno.

Se viene specificato un numberToReturn, la prima raccolta, contiene gli elementi di passaggio, da non superare il valore specificato.

Gli oggetti rimanenti, anche quelli che PASSANO il filtro di espressione, vengono restituiti nella seconda raccolta.,

Ottieni i membri di un array

Per ottenere le proprietà e i metodi di un array, come la proprietà Length e il metodo SetValue, usa il parametro InputObject del cmdlet Get-Member.

Quando si pipe un array aGet-Member, PowerShell invia gli elementi oneat un tempo eGet-Member restituisce il tipo di ogni elemento nella matrice (ignoringduplicates).

Quando si utilizza il parametro InputObject,Get-Member restituisce i membri dell’array.,

Ad esempio, il seguente comando ottiene i membri del$a arrayvariable.

È anche possibile ottenere i membri di un array digitando una virgola (,) prima del valore che viene convogliato nel cmdletGet-Member. La virgola rende la matrice thesecond elemento in una matrice di array. PowerShell pipa gli array una volta ata eGet-Member restituisce i membri dell’array. Come i prossimi dueesempi.,

Manipolazione di un array

È possibile modificare gli elementi di un array, aggiungere un elemento a un array e combinare i valori di due array in un terzo array.

Per modificare il valore di un particolare elemento in un array, specificare il nome dell’array e l’indice dell’elemento che si desidera modificare, quindi utilizzare l’operatore assignment (=) per specificare un nuovo valore per l’elemento., Ad esempio, per modificare il valore del secondo elemento nell’array $a (posizione indice 1) a10, digitare:

È anche possibile utilizzare il metodo SetValue di un array per modificare un valore. L’esempio seguente modifica il secondo valore (posizione indice 1) dell’operatore $a arrayto 500:

È possibile utilizzare l’operatore += per aggiungere un elemento a un array. L’esempio seguente mostra come aggiungere un elemento all’array$a.,

Nota

Quando si utilizza l’operatore +=, PowerShell crea effettivamente un nuovo array con i valori dell’array originale e il valore aggiunto. Questo potrebbe causare problemi di prestazioni se l’operazione viene ripetuta più volte o la dimensione dell’array è troppo grande.

Non è facile eliminare elementi da un array, ma è possibile creare un newarray che contiene solo elementi selezionati di un array esistente., Ad esempio,per creare l’array $t con tutti gli elementi dell’array $a ad eccezione del valore nella posizione dell’indice 2, digitare:

Per combinare due array in un singolo array, utilizzare l’operatore plus (+). L’esempio seguente crea due array, li combina e quindi visualizza l’array combinato risultante.

Di conseguenza, l’array$z contiene 1, 3, 5 e 9.,

Per eliminare un array, assegnare un valore di $null all’array. Il seguente comando elimina l’array nella variabile$a.

$a = $null

È anche possibile utilizzare il cmdlet Remove-Item, ma assegnare un valore di $null è più veloce, specialmente per array di grandi dimensioni.

Array di zero o uno

A partire da Windows PowerShell 3.0, una raccolta di zero o un oggetto hala proprietà Count e Length. Inoltre, è possibile indicizzare in un array di oneobject., Questa funzione consente di evitare errori di scripting che si verificano quando un comando che prevede una raccolta ottiene meno di due elementi.

I seguenti esempi dimostrano questa funzionalità.

Zero oggetti

Un oggetto

Supporto per l’indicizzazione del sistema.Oggetti Tuple

PowerShell 6.1 ha aggiunto il supporto per l’accesso indicizzato di oggetti Tuple, simile agli array.,Ad esempio:

A differenza degli array e di altri oggetti di raccolta, gli oggetti tuple vengono trattati come oggetti singoli quando vengono passati attraverso la pipeline o da parametri che supportano i raggi di oggetti.

Per ulteriori informazioni, vedere Sistema.Tupla.

Vedi anche

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


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *