82 votes

Initialisation du tableau PowerShell

Quel est le meilleur moyen d'initialiser un tableau dans Powershell?

Par exemple le code

 $array = @()
for($i=0; $i -lt 5;$i++)
{
	$array[$i] = $FALSE
}
 

génère l'erreur

 Array assignment failed because index '0' was out of range.
At H:\Software\PowerShell\TestArray.ps1:4 char:10
+         $array[$ <<<< i] = $FALSE
 

101voto

halr9000 Points 3012

Voici deux autres moyens très concis.

 $arr1 = @(0) * 20
$arr2 = ,0 * 20
 

55voto

Scott Saad Points 8894

Vous pouvez également compter sur la valeur par défaut du constructeur si vous souhaitez créer un tableau typé:

> $a = new-object bool[] 5
> $a
False
False
False
False
False

La valeur par défaut d'un bool est apparemment faux , donc ce qui fonctionne dans votre cas. De même, si vous créez un typée int[] tableau, vous obtenez la valeur par défaut de 0.

Une autre façon cool que j'utilise pour initialze tableaux est avec le raccourci suivant:

> $a = ($false, $false, $false, $false, $false)
> $a
False
False
False
False
False

Ou si vous pouvez vous le souhaitez initialiser une plage, j'ai parfois trouvé ce utile:

> $a = (1..5) 
> $un
1
2
3
4
5

Espérons que cela a été un peu utile!

47voto

David Mohundro Points 5158

Encore une autre alternative:

 for ($i = 0; $i -lt 5; $i++) 
{ 
  $arr += @($false) 
}
 

Celui-ci fonctionne si $ arr n'est pas encore défini.

Quelques bons articles sur PowerShell et les tableaux:

http://www.leedesmond.com/weblog/?p=183
http://get-powershell.com/2008/02/07/powershell-function-new-array/

13voto

Peter Seale Points 2233
$array = 1..5 | foreach { $false }

11voto

EBGreen Points 14478
$array = @()
for($i=0; $i -lt 5; $i++)
{
    $array += $i
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X