PowerShell的多变量同时赋值语句


关键词

PowerShell的多变量同时赋值语句

摘要

PowerShell的多变同时量赋值语句

所谓赋值语句,洪哥在最早学C语言时就知道那就是“a=1;”。这么多年来,虽然语言在变,但赋值语句基本没变过。但今天在看一串PowerShell代码的时候,这种理念被推翻了。洪哥看到了多变量同时赋值的语句。

洪哥看到的语句是这样的:
$a[0],$a[1]=$a[0],$a[1];
大家来猜猜它是什么意思?

PowerShell的多变量同时同时赋值语句

所谓赋值语句,洪哥在最早学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>

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:PowerShell的多变量同时赋值语句:http://www.splaybow.com/post/powershell-multi-variant-assignment.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« PowerShell循环变量运算符$_ PowerShell把相对路径解析为绝对路径 »