gpt4 book ai didi

powershell - $ null是否应位于等式比较的左侧? (带有数组的-eq)

转载 作者:行者123 更新时间:2023-12-02 22:11:56 24 4
gpt4 key购买 nike

与同事讨论时,$null应该位于支票的左侧还是右侧?为什么这很重要的任何例子?

$abc = $null
$null -eq $abc
True
$abc -eq $null
True

一切都好
$abc = 6,7,$null,8,9
$null -eq $abc
False
$abc -eq $null
*No output*

有人可以解释比较数组时发生了什么吗?

最佳答案

执行比较操作时,PowerShell将首先评估操作数操作数,以确定它是集合还是标量值。如果它是标量,它将把操作数彼此比较为整个对象。

2 -eq 1,2,$null,3
False

$null -eq 1,2,$null,3
False

4 -eq 1,2,$null,3
False

如果它是一个集合,它将在集合中进行迭代,将每个元素与第二个操作数进行比较,如果找到匹配项,则返回第二个操作数的值。
1,2,$null,3 -eq 2
2

1,2,$null,3 -eq $null
<nothing appears, indicating returned value is $null>

1,2,3 -eq 4
<nothing appears, indicating returned value is $null>

第二个和第三个示例之间的关键区别。除非您 绝对知道,第二个操作数始终是 $null还是从不,否则您将无法信任比较操作的输出。

附带说明一下,如果两个操作数都是集合,则每种情况下 -eq都会返回 $null,因为您不能使用 -eq来比较集合。

因此,为了回答这个问题,通常将 $null放在左侧,因为在比较操作中使用 $null时,假定您要比较标量值。如果这个假设是错误的,那么 $null可能会更好地放在另一侧,但这不太可能。

相反,我总是将 $null放在右边,因为我在上述假设下编写了我的代码-当在比较操作中明确提到 $null时,我 总是比较标量值。这样,当我返回非 bool 值时,我知道我没有正确访问方程式中的集合对象。但是,我被困在陷阱中,因此,通过更改方式可以更好地为我的编码实践服务。

总而言之,就像任何编码实践一样,这是一个见仁见智的问题。如果我要教PowerShell,我会教这种做法。但是,我发现我不太可能改变自己的煽动性方式。

关于powershell - $ null是否应位于等式比较的左侧? (带有数组的-eq),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58217913/

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