Question
[Résolu] Bug dans les tests de typage ?
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 47
- Remerciements reçus 0
[PS] D:\dev\powershell>[string[]]
IsPublic IsSerial Name BaseType
----
True True String[] System.Array
[string[]] est donc bien un type valide !
Testons...
[PS] D:\dev\powershell>$pop='1.2.3.4','méta.soc','inf32 12','machine5'
[PS] D:\dev\powershell>$pop -is [array]
True
[PS] D:\dev\powershell>$pop[0] -is [string]
True
[PS] D:\dev\powershell>$pop[1] -is [string]
True
[PS] D:\dev\powershell>$pop[2] -is [string]
True
[PS] D:\dev\powershell>$pop[3] -is [string]
True
et Surprise !
[PS] D:\dev\powershell>$pop -is [string[]]
False
C'est déja dommage, mais même en forçant, rien à faire !
[PS] D:\dev\powershell>$pop -as [string[]]
1.2.3.4
méta.soc
inf32 12
machine5
[PS] D:\dev\powershell>$pop -is [array]
True
[PS] D:\dev\powershell>$pop -is [string[]]
False
Me suis-je trompé ?
Sinon, quel est l'endroit officiel pour signaler les bugs ?
Message édité par: Perso, à: 22/11/09 08:37<br><br>Message édité par: Arnaud, à: 24/11/09 21:35
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Je serais tenté de te répondre non, tout est correct.Me suis-je trompé ?
Mais tu considères ton tableau comme étant d'un certain type, ton erreur est là je pense.
Perso écrit:
Normal, le type ancêtre est bien Array, mais un tableau de quoi ?et Surprise !
Construit ainsi $pop est un tableau d'objet.On peut y placer tout type d'objet.
Une string est aussi un objet, toujours, mais pas l'inverse. Un objet n'est pas tjr une string.
Pour le savoir on utilise l'opérateur -as, comme tu le fais.
Mais pour récupérer le résultat de l'opération, un nouvel objet avec un type plus prècis, il faut une nouvelle variable :
[code:1]$pop2=$pop -as [string[]]
$pop2 -is [string[]]
#True
$pop2.psbase -eq $null
#False
[/code:1]
Dans l'exemple suivant, le cast ne fonctionne pas :
[code:1]
$pop3=$pop -as [Double[]]
$pop3.psbase -eq $null
#True
[/code:1]
Perso écrit:
connect.microsoft.comSinon, quel est l'endroit officiel pour signaler les bugs ?
Il te faut un compte Windows Live (anciennement Passport).
Pour la route, par Keith Hill :
[code:1]
#Array covariance support
$arr = '127.0.0.1','192.168.1.100','192.168.1.101'
$ips = [system.net.ipaddress[]]$arr
$ips | ft IPAddressToString, AddressFamily -auto
#IPAddressToString AddressFamily
#
#127.0.0.1 InterNetwork
#192.168.1.100 InterNetwork
#192.168.1.101 InterNetwork
[/code:1]
MSDN : Covariance de tableau
[code:1]$pop4 = [string[]]$pop
$t='1.2.3.4','méta.soc',12,'machine5',5.1, (gv pop)
$t2 = [string[]]$t
$t2
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 47
- Remerciements reçus 0
Je note avec le dernier exemple la conversion auto des éléments en string.
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Bug dans les tests de typage ?