【发布时间】:2013-05-03 21:26:12
【问题描述】:
感谢PowerShell Logic,我熟悉了当左操作数是集合时-eq 如何工作的一些复杂性——而不是布尔值,-eq 将返回与右操作数相等的元素数组。来自 3.0 规范:
如果左操作数指定的值不是集合,则 结果具有布尔类型。否则,结果可能为空 包含元素的无约束一维数组 与指定的值进行比较时测试 True 的集合 右操作数。
也就是说,我发现了一个对我来说不太有意义的案例。如果我声明一个数组的元素也是一个数组,我实际上无法让-eq 匹配该元素:
$a = @( 1, @(2, 3) )
$a -eq 1 # results in an array with a single element, containing 1
$a -eq @( 2, 3 ) # results in an empty array
发生了什么事?很难判断这是 PowerShell 包装了混合类型的数组元素、包装了二维数组、值与引用类型相等检查的问题,还是其中的任何子集。
【问题讨论】:
标签: powershell equality equals-operator