我有一个获取数据的函数,根据一组用户指定的参数对其进行验证,如果它是正确的则输出,并且基于该操作,它可以正常工作.作为函数的进一步发展,我试图转向'标志'的按位枚举,但不能让它像我想要的那样工作.
我想切换枚举并为所有可能的'匹配'运行大小写,但我只在这个值上只有一个直接匹配的情况下获得匹配.IE浏览器.当值为1时,它会运行"牛奶",但如果值为3则不会运行"牛奶"和"面包"情况...我有点假设它试图运行"牛奶,面包"案例.
有没有简单的方法,我没有看到这个?> <
[Flags()] enum Breakfast {
Nothing = 0
Milk = 1
Bread = 2
Egg = 4
Bacon = 8
}
$BreakfastFlag = 3
Switch ([Breakfast]$BreakfastFlag){
Nothing {
Write-Host "No breakfast was selected" -ForegroundColor White -BackgroundColor Red
}
Milk {
Write-Host "Milk was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
Bread {
Write-Host "Bread was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
Egg {
Write-Host "Egg was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
Bacon {
Write-Host "Bacon was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
}
Run Code Online (Sandbox Code Playgroud)
另一种变体:
[Flags()] enum Breakfast {
Nothing = 0
Milk = 1
Bread = 2
Egg = 4
Bacon = 8
}
$BreakfastFlag = 3
Switch ([Breakfast]$BreakfastFlag)
{
Nothing {
Write-Host "No breakfast was selected" -ForegroundColor White -BackgroundColor Red
}
{ $_ -band [Breakfast]::Milk } {
Write-Host "Milk was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
{ $_ -band [Breakfast]::Bread } {
Write-Host "Bread was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
{ $_ -band [Breakfast]::Egg } {
Write-Host "Egg was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
{ $_ -band [Breakfast]::Bacon } {
Write-Host "Bacon was selected!" -ForegroundColor White -BackgroundColor DarkGreen
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Milk was selected!
Bread was selected!
>> Script Ended
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |