gpt4 book ai didi

powershell - 为什么比较运算符在枚举后不起作用?

转载 作者:行者123 更新时间:2023-12-02 23:16:47 25 4
gpt4 key购买 nike

我在下面有一个非常简单的用例,需要确定数组的某些元素是否存在。为什么在这种情况下条件运算符不起作用?

@("a", "b").Where{$_ -eq "a"} -eq $true

最佳答案

.Where()数组方法用作过滤器(就像其cmdlet对应的Where-Object一样),因此返回匹配元素的子数组[1],而不是 bool(boolean)
对于简单相等性测试 [2],您可以改用 bool(boolean) -contains operator:

('a', 'b') -contains 'a' # -> $true
如果您确实需要通过 .Where() 进行更复杂的 基于脚本块的测试:
('a', 'b').Where({ $_ -in 'a', 'z' }, 'First').Count -ne 0
请注意 'First'参数,作为一项重要的优化,它使找到第一个匹配项后返回 .Where()
由于结果总是包装在array [1]中,因此检查 .Count属性足以确定是否找到匹配项。

[1]从技术上讲,将返回 [System.Collections.ObjectModel.Collection[psobject]]类型的集合。
[2]请注意,PowerShell默认情况下不区分大小写,但是它为区分大小写的操作提供了 c前缀的比较运算符版本;例如 -ccontains,或等效的操作数反转 -in operator-cin

关于powershell - 为什么比较运算符在枚举后不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64395227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com