Question fixer le nombre de membres d'un tableau

Plus d'informations
il y a 15 ans 2 mois #9110 par jojo
hello :laugh:

comment fixer le nombre de membres d'un tableau à 3 éléments seulement....voici un exemple de ce que je veux faire:

[code:1]PS> $arrayfix=1,5,8
PS> $arrayfix
1
5
8
PS> $arrayfix=1,5,8,9
PS> $arrayfix
# retourne une erreur:
# membres dépassant 3
PS>
PS> $arrayfix=1,5
PS> $arrayfix
# retourne une erreur:
# membres inférieur à 3[/code:1]

j'ai contourné ce problème en passant par une petite fonction, mais ça reste une solution peu académique à mon goût.

[code:1]function fix([array]$arrayfixe,[int]$count=3)
{ if($arrayfixe.Count -gt $count) { throw \"membres depassant $Count\" }
elseif($arrayfixe.Count -lt $count) {throw \"membres inférieur à $Count\"}
else {$arrayfixe}
}
PS> $monarray=\"p\",\"s\",\"u\" # ok
PS> fix $monarray
p
s
u
PS> $tabeleau=5,9 # inferieur au nombre d'éléments souhaité
PS> fix $tabeleau -count 9
PS>
PS>
PS> $array=5,9,6,\"k\" # dépasse le nombre d'éléments souhaité
PS> fix $array[/code:1]

existe-t'il une solution plus \"propre\" pour faire celà ?

merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #9129 par xyz
Salut,
il faut utiliser explicitement un constructeur de la classe ARRAY, là où PS le fait implicitement.
[code:1]
$T=new-object 'int32[]' 3
$t[0]=1
$t[1]=2
$t[2]=3
$t[3]=4
#L'affectation du tableau a échoué, car l'index « 3 » était hors limites.
[/code:1]
MAIS l'opérateur += remplacera tjr cette construction initiale.:
[code:1]
$t +=4
$t.Count
$t
[/code:1]
Pour l'en empêcher :
[code:1]
Remove-Variable T
New-Variable -Name T -Value (new-object 'int32[]' 3) -Option ReadOnly[/code:1]
Attention à ne pas confondre une variable PS en R/O et un objet de type tableau en R/O, car on pourrait combiner les deux, voir à ce sujet le chapitre 2.6 de ce tutoriel .<br><br>Message édité par: Laurent Dardenne, à: 9/03/11 21:12

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 2 mois #9130 par jojo
trop fort :)
merci Laurent..je vais sûrement lire ton tutoriel qui va bien m'aider à avancer

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.035 secondes
Propulsé par Kunena