【问题标题】:What is the difference between @() and @{} in Powershell and when to use one over another?Powershell 中的@() 和@{} 有什么区别以及何时使用它们?
【发布时间】:2020-05-02 07:33:55
【问题描述】:

我在 powershell 中浏览了一些示例,并查看了 @() 和 @{} 的用法。 Doing a quick google search on the difference 告诉我一个是数组,另一个是哈希表。

你能分享一些现实生活中的例子,比如我想构建一个哈希表而不是一个数组吗?一个比另一个的优点/缺点?提前感谢您的投入!

【问题讨论】:

    标签: arrays powershell hashtable


    【解决方案1】:

    array 只是一个值列表,而 hashtable 是键/值对的集合。

    这里有一些例子:

    数组

    $i = @(1,2,3,4,5)
    

    哈希表

    [hashtable]$i = @{ Number = 1; Shape = "Square"; Color = "Blue"}
    

    【讨论】:

    • 很好,但值得一提的是,数组文字不需要@(...)(在旧的PS版本中甚至会产生不必要的开销)-$i = 1,2,3,4,5 可以。 @(...) 的主要目的是确保命令的输出 被视为一个数组。
    【解决方案2】:

    哈希表的优点

    • 主要优点是同步。

    • 在许多情况下,哈希表比搜索树或任何其他表查找结构更有效。因此,它们被广泛用于多种计算机软件中,特别是关联数组、数据库索引、缓存和集合。

    哈希表的缺点

    • 哈希冲突实际上是不可避免的。当散列大量可能键的随机子集时。

    • 当有很多冲突时,哈希表变得非常低效。

    • 哈希表不允许空值,如哈希映射。

    数组的优点

    • 类型安全。收集相同类型的数据。

    • 可以通过索引访问。

    • 对于存储较少的值很有用。

    数组的缺点

    • 固定大小。

    • 内存浪费。在处理大量值时没有用。

    【讨论】:

    • 同一个数组中可以有不同的类型。 Get-childitem 输出是一个示例(文件和目录)。
    • 对不起,我忘了提。
    猜你喜欢
    • 2017-05-18
    • 2014-10-25
    • 2016-03-21
    • 2023-03-17
    • 2020-04-29
    • 2020-02-26
    • 1970-01-01
    • 2018-07-01
    • 2010-09-06
    相关资源
    最近更新 更多