PowerShell中定義多個變數並賦值的例子

NO IMAGE

所謂賦值語句,小編在最早學C語言時就知道那就是“a=1;”。這麼多年來,雖然語言在變,但賦值語句基本沒變過。但今天在看一串PowerShell程式碼的時候,這種理念被推翻了。小編看到了多變數同時賦值的語句。

小編看到的語句是這樣的:
複製程式碼 程式碼如下:$a[0],$a[1]=$a[0],$a[1];
大家來猜猜它是什麼意思?

其實很好猜,第一眼看上去就像是把$a[0]和$a[1]這兩個陣列元素顛倒。而事實上的效果也是這樣的。難道說這就是兩個變數互換值的語句嗎?我們知道在傳統的程式語言裡面,要把兩個變數的值交換,至少需要三個語句,還需要一箇中間變數的。比如要把a與b的值交換,那麼程式碼應該這樣寫:
複製程式碼 程式碼如下:c=a;a=b;b=c;

這裡的c是新增加出來的一個變數。這樣看來,PowerShell還真TMD強大啊!

小編還異想天開的做了一些嘗試,發現原來這個語法不僅僅顛倒兩個值那麼簡單。比如:
複製程式碼 程式碼如下:
PS> $a=1,2,3
PS> $a[0],$a[1],$a[2]=$a[1],$a[2],$a[0];
PS> -join $a
231
看見沒有,把陣列元素的值,轉了一圈。

小編還做了這樣一個測試:
複製程式碼 程式碼如下:PS> $a, $b=1,2
PS> $a
1
PS> $b
2

相當於是對照等號的前後,按順序逐個賦值。很好理解吧!再看看下面這個:
複製程式碼 程式碼如下:PS C:\Users\hong> $a, $b=1,2,3
PS C:\Users\hong> $a
1
PS C:\Users\hong> $b
2
3
哈哈,這個有趣了。前面是兩個變數,後面是三個值。那PowerShell會把它們怎麼辦呢。根據結果所示,$a賦值了1,$b被當成了陣列,賦值了2和3。

所以小編把這個語法稱之為“多變數同時賦值”,就是把多個變數同時賦值,當然賦值中存在一些細節,已經在上面的例子中展示了。

最後有人一定想問,如果變數個數多於值的個數,會是什麼樣的結果呢?呵呵,看看:
複製程式碼 程式碼如下:PS C:\Users\hong> $a, $b,$c,$d=1,2,3
PS C:\Users\hong> $d
PS C:\Users\hong>