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