所謂賦值語(yǔ)句,小編在最早學(xué)C語(yǔ)言時(shí)就知道那就是“a=1;”。這么多年來(lái),雖然語(yǔ)言在變,但賦值語(yǔ)句基本沒(méi)變過(guò)。但今天在看一串PowerShell代碼的時(shí)候,這種理念被推翻了。小編看到了多變量同時(shí)賦值的語(yǔ)句。
小編看到的語(yǔ)句是這樣的:
復(fù)制代碼 代碼如下:
$a[0],$a[1]=$a[0],$a[1];
大家來(lái)猜猜它是什么意思?
其實(shí)很好猜,第一眼看上去就像是把$a[0]和$a[1]這兩個(gè)數(shù)組元素顛倒。而事實(shí)上的效果也是這樣的。難道說(shuō)這就是兩個(gè)變量互換值的語(yǔ)句嗎?我們知道在傳統(tǒng)的編程語(yǔ)言里面,要把兩個(gè)變量的值交換,至少需要三個(gè)語(yǔ)句,還需要一個(gè)中間變量的。比如要把a(bǔ)與b的值交換,那么代碼應(yīng)該這樣寫(xiě):
復(fù)制代碼 代碼如下:
c=a;a=b;b=c;
這里的c是新增加出來(lái)的一個(gè)變量。這樣看來(lái),PowerShell還真TMD強(qiáng)大啊!
小編還異想天開(kāi)的做了一些嘗試,發(fā)現(xiàn)原來(lái)這個(gè)語(yǔ)法不僅僅顛倒兩個(gè)值那么簡(jiǎn)單。比如:
復(fù)制代碼 代碼如下:
PS> $a=1,2,3
PS> $a[0],$a[1],$a[2]=$a[1],$a[2],$a[0];
PS> -join $a
231
看見(jiàn)沒(méi)有,把數(shù)組元素的值,轉(zhuǎn)了一圈。
小編還做了這樣一個(gè)測(cè)試:
復(fù)制代碼 代碼如下:
PS> $a, $b=1,2
PS> $a
1
PS> $b
2
相當(dāng)于是對(duì)照等號(hào)的前后,按順序逐個(gè)賦值。很好理解吧!再看看下面這個(gè):
復(fù)制代碼 代碼如下:
PS C:\Users\hong> $a, $b=1,2,3
PS C:\Users\hong> $a
1
PS C:\Users\hong> $b
2
3
哈哈,這個(gè)有趣了。前面是兩個(gè)變量,后面是三個(gè)值。那PowerShell會(huì)把它們?cè)趺崔k呢。根據(jù)結(jié)果所示,$a賦值了1,$b被當(dāng)成了數(shù)組,賦值了2和3。
所以小編把這個(gè)語(yǔ)法稱之為“多變量同時(shí)賦值”,就是把多個(gè)變量同時(shí)賦值,當(dāng)然賦值中存在一些細(xì)節(jié),已經(jīng)在上面的例子中展示了。
最后有人一定想問(wèn),如果變量個(gè)數(shù)多于值的個(gè)數(shù),會(huì)是什么樣的結(jié)果呢?呵呵,看看:
復(fù)制代碼 代碼如下:
PS C:\Users\hong> $a, $b,$c,$d=1,2,3
PS C:\Users\hong> $d
PS C:\Users\hong>