Se ho un array
PowerShell:
ed ho la necessità di modificare tutti i valori, la cosa che viene naturale pensare è un ciclo di questo tipo
$arr | % { $_ = $_ + " - aggiungo una stringa"; write-host $_ }
pur venendo stampato il nuovo valore (write-host), l'array non viene modificato in quanto
$_ rappresenta il valore locale dell'iterazione ma non un riferimento alla posizione dell'array.
Un possibile approccio per raggiungere lo scopo è questo:
(0..($arr.length-1)) | % {$arr[$_] = $arr[$_] + " - aggiungo una stringa"; }
$arr
In questo caso l'array vivene modificato.
Questo perchè costruisco una sequenza di numeri
(0..($arr.length-1)) lunga quanto gli elementi dell'array e che poi uso per accedere all'array
$arr[$_] (
$_ rappresenta solo l'indice).
Lo stesso scopo lo raggiungo anche con il classico
ciclo for:
for($i = 0; $i -lt $arr.length; $i++) {$arr[$i] = $arr[$i] + " - aggiungo una stringa"; }
$arr