Question
Retourner plusieurs valeurs dans une fonction
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
désolé j'ai un peu perturbé tes réponses
ton explication est plus clair<br><br>Message édité par: 6ratgus, à: 15/05/15 12:01
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Non, c'est un comportement par défaut, peut importe la version.contrairement à powershell v4 peut etre v3, en v2 dans une fonction l'appel d'une fonction qui renvoie une valeur perturbe le return !
L'usage de l'instruction Return documente le code et évite qu'un débutant ne connaissant pas ce comportement soit dérouté lors de la relecture. Elle balise l'intention.
Return émet son résultat (1 ou + valeurs) dans le pipeline, et il n'y a qu' un pipeline exécuté à la fois dans un runspace (session PS).<br><br>Message édité par: Laurent Dardenne, à: 15/05/15 12:16
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
6ratgus écrit:
Pas de soucisdésolé j'ai un peu perturbé tes réponses
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
bon après quelques tests, j'ai pas de comportement différent.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Non pas à ma connaissance. C'est surtout la v3 qui comporte des breaking change.par contre il y a un comportement diffèrent entre la v2 et la v4 sur les valeurs $null renvoyer !?
Ici j'ai testé avec la v4
Par contre ceci se comporte différemment depuis la v3 :
[code:1]foreach ($O in $null) {$o.gettype()}[/code:1]
Et c'est l'itération qui est modifié, pas le principe du pipeline.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
6ratgus écrit:
Non pas à ma connaissance. C'est surtout la v3 qui comporte des breaking change.par contre il y a un comportement diffèrent entre la v2 et la v4 sur les valeurs $null renvoyer !?
j'ai cru avoir mal vu ou ne pas avoir compris ce que je testé,
mais voila, les deux tests suivant donne pas les mêmes résultats en v4 et ont les mêmes réponses en v2
[code:1]
###### Test 1 ######################################
function test1() {
return $null, $false
}
\"test 1\"
$Result = test1
\"$($Result.count) valeur renvoyé\"
\"la premiere valeur est null ? : $($Result[0] -match $null)\"
\"la deuxieme valeur est false ? : $($Result[1])\"
# résultat
test 1
2 valeur renvoyé
la premiere valeur est null ? : True
la deuxieme valeur est false ? : False
###### Test 2 ######################################
function test2() {
$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.CreateNoWindow = $true
$process.StartInfo.UseShellExecute = $true
$process.StartInfo.FileName = \"ping.exe\"
$process.StartInfo.WorkingDirectory = \"C:\windows\System32\"
$process.StartInfo.Arguments = \"-n 1 www.free.fr\"
$r = $process.Start() | Out-Null
$timer = $process.WaitForExit()
return $timer, $false
}
\"test 2\"
$timer = $null
$Result = test2
\"$($Result.count) valeurs renvoyés\"
\"la premiere valeur est null ? : $($Result[0] -match $null)\"
\"la deuxieme valeur est false ? : $($Result[1])\"
# résultat
1 valeurs renvoyés
la premiere valeur est null ? : True
la deuxieme valeur est false ? :
[/code:1]
en v4 sur le deuxieme test (fonction test2) la valeur renvoyé n'a aucune valeur même pas null, un $Result[1] -match $null ne me renvoie rien ??
alors qu'en v2 j'ai bien les valeurs true et false qui s'ont renvoyés dans les deux cas !!
je crois que je vais arrêté l'informatique !
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Retourner plusieurs valeurs dans une fonction