建立阵列
使用「逗号」来建立阵列
#一个阵列(内含三个元素)PS R:\> $arr = 5, 6, 7PS R:\> $arr567#一个阵列(内含一个元素)PS R:\> $arr = ,100PS R:\> $arr100#元素可以是不同型别PS R:\> $arr = 100, 200, "abc"PS R:\> $arr100200abc#小括弧的功能,并不是用来建立阵列,而是用来调整优先顺序PS R:\> $arr = (100, 200, "abc")PS R:\> $arr.Count3#一个阵列(内含一个元素,元素本身是阵列)PS R:\> $arr = ,(100, 200, "abc")PS R:\> $arr.Count1#不加小括弧PS R:\> $arr = ,100, 200, "abc"PS R:\> $arr.Count3
命令的可能结果
#$files的可能型别:# 找到0 个txt:null# 找到1 个txt:FileInfo# 找到多个txt:阵列PS R:\> $files = dir *.txt
使用 @() 传回阵列
#$files的可能结果:# 一个空阵列(长度0)# 一个阵列(内含一个元素)# 一个阵列(内含多个元素)#如果不是阵列,就把它变成阵列#如果已经是阵列了,就不管它PS R:\> $files = @(dir *.txt)
不使用 @() 的话
#以为Length属性是「找到的个数」#结果是「档案大小」#原来,它只找到一个档案,传回了FileInfo物件PS R:\> $files = dir *.ps1PS R:\> $files.Length631#这里的Length属性是阵列长度PS R:\> $files = @(dir *.ps1)PS R:\> $files.Length1
使用 @() 来建立空阵列
PS R:\> $arr = @()
() vs @()
#没有找到档案时,会报错PS R:\> (dir *.zip)[0]无法编制 Null 阵列的索引。位于 线路:1 字元:1#没有找到档案时,不会报错PS R:\> @(dir *.zip)[0]PS R:\> $null -eq @(dir *.zip)[0]True
使用 .. 来建立阵列
# 起点、终点都有包含PS R:\> 100 .. 102100101102# 递减PS R:\> 3 .. 1321
function的传回值
传回的是,阵列里的元素。不传回阵列
#不只return是传回值,其他地方也是PS R:\> function myFunc{>> #这里是传回值>> 100,200,300>>>> #这里也是传回值>> return 700,800,900>> }#$r是一个阵列(内含6个元素)PS R:\> $r = myFuncPS R:\> $r.Count6PS R:\> function myFunc2{>> $a1 = 100,200,300>> $a2 = 700,800,900>>>>>> #这里是传回值>> $a1>>>> #这里也是传回值>> return $a2>> }#$r是一个阵列(内含6个元素)PS R:\> $r = myFunc2PS R:\> $r.Count6
在「阵列」前面加逗号,使它传回阵列
PS R:\> function myFunc{>> #前面加逗号>> ,(100,200,300)>>>> #前面加逗号>> return ,(700,800,900)>> }PS R:\> $r = myFuncPS R:\> $r.Count2PS R:\> $r[0]100200300PS R:\> $r[1]700800900PS R:\> function myFunc2{>> $a1 = 100,200,300>> $a2 = 700,800,900>>>>>> #前面加逗号>> ,$a1>>>> #前面加逗号>> return ,$a2>> }PS R:\> $r = myFunc2PS R:\> $r.Count2PS R:\> $r[0]100200300PS R:\> $r[1]700800900
阵列取值
负的索引值
PS R:\> $arr = 100, 200, 300PS R:\> $arr[-1]300# 0 到 -1 并不是全部PS R:\> $arr[0..-1]100300PS R:\> 0..-10-1
中括弧内可以放阵列
#只有取值可以这样做。设值不行。PS R:\> $arr = 100, 200, 300PS R:\> $i = 2, 1, 0PS R:\> $arr[$i]300200100
阵列的属性值
PS R:\> $files = @(dir *.txt)#使用「阵列自己」的属性值PS R:\> $files.Length3#使用「元素」的属性值PS R:\> $files.LastWriteTime2022年4月12日 下午 06:45:112022年5月29日 上午 08:00:132022年5月30日 下午 08:06:53
阵列设值
阵列向等号左边设值
#变数个数相同PS R:\> $arr = 100, 200, 300PS R:\> $a, $b, $c = $arrPS R:\> $a100PS R:\> $b200PS R:\> $c300#变数个数少PS R:\> $a, $b = $arrPS R:\> $a100PS R:\> $b200300#变数个数多PS R:\> $a, $b, $c, $d = $arrPS R:\> $a100PS R:\> $b200PS R:\> $c300PS R:\> $dPS R:\> $null -eq $dTrue
阵列加法
阵列 + 阵列
PS R:\> $arr1 = 100, 200, 300PS R:\> $arr2 = 400, 500, 600#加入的是元素PS R:\> $r = $arr1 + $arr2PS R:\> $r.Count6#前面放逗号,加入阵列PS R:\> $r = $arr1 + ,$arr2PS R:\> $r.Count4
阵列 + 元素
PS R:\> $arr1 = 100, 200, 300#把 500 放到阵列后面PS R:\> $r = $arr1 + 500PS R:\> $r.Count4#把 500 放到阵列前面PS R:\> $r = 500 + $arr1方法引动过程失败,因为 [System.Object[]] 未包含名为 'op_Addition' 的方法。位于 线路:1 字元:1#用 @() 转成阵列,再相加PS R:\> $r = @(500) + $arr1PS R:\> $r.Count4
阵列乘法
PS R:\> $arr1 = 100, 200, 300# 倍数要放在右边PS R:\> $r = $arr1 * 3PS R:\> $r.Count9# 倍数不能放在左边PS R:\> $r = 3 * $arr1方法引动过程失败,因为 [System.Object[]] 未包含名为 'op_Multiply' 的方法。位于 线路:1 字元:1