所谓赋值语句,小编在最早学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> $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
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>
PS C:\Users\hong> $d
PS C:\Users\hong>