【问题标题】:Reasoning behind PowerShell comparison operatorsPowerShell 比较运算符背后的推理
【发布时间】:2012-06-20 17:11:42
【问题描述】:

是否有人理解为每个 PowerShell 的比较运算符制作区分大小写和不区分大小写版本背后的原因?为什么要让默认值不区分大小写?

例如,以 -eq 和 -ceq 为例。这些运算符用于比较所有类型,而不仅仅是字符串。那么 0 -ceq 1 是什么意思呢?如何不区分大小写比较两个整数?

【问题讨论】:

  • 因为 - 不区分大小写 - 通常是执行管理脚本时需要的(尤其是从命令点开始)。但是这个问题对 SO 没有建设性(除非你有幸得到,否则不可能有客观的答案像here这样的PSH团队之一。

标签: powershell comparison operator-keyword


【解决方案1】:

很明显,因为有时您需要区分大小写,有时则不需要。不区分大小写是一个合理的默认设置,因为当您从命令行执行临时查询时,您不需要做额外的工作来确保您看到最常见的匹配示例。

至于 0 -ceq 1 可能意味着什么:谁在乎?真的!如果您不想知道,请不要编写代码。

【讨论】:

  • 我认为每个人都应该关心。相等运算符,无论是什么语言,都应该平等地服务于所有对象。但是 PowerShell 的实现与此大相径庭,并且与它促进其紧密耦合的 .NET 框架(和语言)不一致。 PowerShell 的强大之处在于您可以多么自然地与任何 .NET 对象进行交互,而不仅仅是字符串。我说创建其他专用运算符来进行字符串比较,并保存 -eq 运算符以进行相等比较。
  • 好的——抛开轻率。如果0 -eq 10 -ceq 1 的意思几乎不一样,那么它显然会被破坏。 Powershell 高度重视一致和通用的方法......例如每个人都使用相同的动词。我可以看到这同样适用于运营商。您需要一套标准的操作符,您可以将其用于任何操作。是的 - 当然,它们应该“正确”工作,但我仍然建议人们远离难以理解的边缘情况。 (你试过1 -eq "1" 吗?)
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
相关资源
最近更新 更多