gpt4 book ai didi

powershell - 为什么第一个示例在 powershell 中得到的结果与以下 2 个不同

转载 作者:行者123 更新时间:2023-12-04 15:37:05 25 4
gpt4 key购买 nike

$b = (2,3)

$myarray1 = @(,$b,$b)

$myarray1[0].length #这将是 1
$myarray1[1].length

$myarray2 = @(
,$b
,$b
)

$myarray2[0].length #这将是 2
$myarray[1].length

$myarray3 = @(,$b
,$b
)

$myarray3[0].length #这将是 2
$myarray3[1].length

更新

我认为在#powershell IRC 上我们已经解决了这个问题,这是另一个示例,它展示了在多行列出数组中的多个项目时,在下一行而不是第一行中用逗号断开的危险。

$b = (1..20)

$a = @( $b, $b ,$b,
$b, $b ,$b)

for($i=0;$i -lt $a.length;$i++)
{
$a[$i].length
}
“——”
$a = @( $b, $b ,$b
,$b, $b ,$b)

for($i=0;$i -lt $a.length;$i++)
{
$a[$i].length
}

产生

20
20
20
20
20
20
--------
20
20
20
1
20
20

事实上,使用嵌套数组可能会使它复杂化,而是一个简单的整数数组

$c = @( 1 , 2 ,
3 , 4 )
for($i=0;$i -lt $c.length;$i++)
{
$c[$i].gettype()
}
“————”
$c = @( 1 , 2
, 3 , 4 )
for($i=0;$i -lt $c.length;$i++)
{
$c[$i].gettype()
}

和结果

IsPublic IsSerial 名称 BaseType
——————————————————
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Int32 System.ValueType
---------
True True Int32 System.ValueType
True True Int32 System.ValueType
真真对象[] System.Array
True True Int32 System.ValueType

我很好奇人们会如何解释这一点。我想我现在明白了,但很难以简洁易懂的方式解释它,尽管上面的例子有点朝着这个目标。

最佳答案

我可以解释第一个例子,但不能解释后两个。一元逗号运算符(请参阅 http://rkeithhill.wordpress.com/2007/09/24/effective-powershell-item-8-output-cardinality-scalars-collections-and-empty-sets-oh-my/ )创建一个包含一个成员的数组,因此 ,$b创建一个包含 ( $b ) 的数组; ,$b,$b创建一个包含( ,$b$b )的数组。

我相信,后两个示例正在创建一个包含 $b,$b 的元素的数组。 .然后单元素数组变平,仅产生 $b,$b .

如果有人可以发布一个链接来明确解释后两个示例的行为,我很乐意看到它!

关于powershell - 为什么第一个示例在 powershell 中得到的结果与以下 2 个不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5287781/

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