gpt4 book ai didi

powershell - 大括号、逗号、参数方法调用

转载 作者:行者123 更新时间:2023-12-03 12:45:28 27 4
gpt4 key购买 nike

我发现很难用谷歌搜索 中这两种执行方法调用的区别的答案。 :

$member = "1.2.3.4:567" # IPaddress + port for demonstration
$vals1 = $member.Split(":") # typical .NET way of executing String.Split
$vals2 = $member.Split( (,":") ) # something else which ive seen in examples which I dont understand

在上面,$vals1$vals2 似乎有相同的结果(一个包含 2 个元素的数组)。我通常会使用第一种方式,但在示例中(同时使用 Split 和其他方法调用)我看到使用了第二种方式。

我的问题是第二个不同的是做什么的,使用它有什么我可能不明白的优点吗?


编辑:请不要关注 Split 方法 - 我不是在问 Split 的重载!

最佳答案

comma operator用作一元就是你所看到的。这是创建数组的一种简写方式。 PowerShell 将在通常需要的标准行为的管道中展开数组。我看到这个常用的地方是为了减轻 PowerShell 的那个特性

在某些情况下,虽然您不希望 PowerShell 展开整个数组,但您要做的是通过该数组前面的逗号一元运算符。考虑输出的差异

使用常规数组表示法

$array = 1,2,3
$array.Count
$array | ForEach-Object{$_.GetType().FullName}

3
System.Int32
System.Int32
System.Int32

使用一元运算符创建锯齿状数组

$commaArray = ,@(1,2,3)
$commaArray.Count
$commaArray | ForEach-Object{$_.GetType().FullName}

1
System.Object[]

在第二个示例中,数组作为一个整体传递。 PowerShell 仍然将其从一个包含一个元素的数组展开到该数组 1、2、3。

还有其他的用例。我更常看到使用 1,2,3 静态声明的常规数组,或者有时需要 @(),具体取决于。两者的结果相同。

关于powershell - 大括号、逗号、参数方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39745848/

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