【发布时间】:2015-02-11 22:00:46
【问题描述】:
我想我在这里遗漏了一些明显的东西。据我了解,Boolean 只能是0、$False、1 或$True。但是当我尝试其他整数时,它们也被接受为$True。
当使用其他整数时,0 或 1 函数应该抛出一个错误,指出它不是 Boolean。还是应该通过为这 4 个不同的输入选项添加 ValidateSet 的错误处理来解决这个问题?
示例:
Function Test-Bar {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=0)]
[Bool]$Var
)
Write-Host "Yes, you entered a valid boolean: $Var" -ForegroundColor Yellow
}
[INT]$Number = '0'
Test-Bar -Var $Number
[INT]$Number = '1'
Test-Bar -Var $Number
[INT]$Number = '10'
Test-Bar -Var $Number # Incorrect, ten is not a boolean
[INT]$Number = '22'
Test-Bar -Var $Number # Incorrect, twenty two is not a boolean
感谢您的帮助。
【问题讨论】:
-
仅供参考,只需输入
[bool]10即可复制此行为 -
感谢马特的提醒。但我真的希望我的函数只接受
$True、$False、0或1,仅此而已。我认为Boolean类型可以做到这一点.. -
哦,我明白了。我只是想指出您的功能可以出于测试目的而简化。真的没有帮助,但this post 说“而且(通常)任何非零整数都计算为 $true”
-
stackoverflow.com/a/18516573/3829407 链接到一篇博客文章:在 PowerShell 中,任何计算结果为 0 的数字都是 FALSE,每个非零数字都是 TRUE。你需要以不同的方式解释这一点。喜欢
ValidateSet
标签: powershell boolean