2009-04-24 12 views
3

Curieux, quelle est l'idée derrière ceci:

@() -as [bool] 
# False 

@($null) -as [bool] 
# False 

@($null, $null) -as [bool] 
# True 

Je me attends soit Faux/Vrai/Vrai ou faux/faux/faux, mais pas faux/faux/vrai.

Répondre

7

Comme il est indiqué dans le Powershell rapide reference¹:

 
True             False 
~~~~             ~~~~~ 
$TRUE            $FALSE 
Any string of length > 0, except the word “false” Empty string or the string “false” 
Any number ≠ 0          Any number = 0 
Array of length > 1         Array of length 0 
Array of length 1 whose element is true    Array of length 1 whose element is false 
A reference to any object       Null 

Je pense que l'idée était qu'un tableau avec un seul élément $false peut facilement se produire si vous mettez la sortie d'une applet de commande/fonction dans un tableau . Vous pourriez vous attendre à plus de valeurs mais une erreur l'a fait retourner $false, mais $false deux fois dans le tableau pourrait être improbable dans ce cas.

Ou peut-être que nous devrions attendre Jeffrey Snover répondre ici :-)

¹ C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Documents \ en-US \ QuadFold.rtf sur ma machine

+0

Très bien avec la citation, mais quelle est l'idée derrière ce comportement? Pouvez-vous donner un exemple ? –

+0

Était un cas d'utilisation que je n'ai pas rencontré jusqu'à présent. Je ne peux pas donner un exemple convaincant, désolé. La plupart des choses que j'ai faites récemment dans PS consistaient à résoudre les problèmes de Project Euler et ce n'est pas vraiment le domaine approprié pour cette langue :-) Mais je vais y réfléchir, peut-être que je trouverai un exemple convaincant. – Joey

+0

Cette citation a engendré une nouvelle question ... "Chaîne vide ou la chaîne" faux "" mais je vois Vraiment essayer "faux" -as [bool]. Et une faute de frappe mineure "Tableau de longueur> 0", il devrait être "Tableau de longueur> 1" comme je le vois dans mon .rtf. – alex2k8

Questions connexes