全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com)
用了很久时间的Perl了,但是一直没有使用过switch结构。即使有的时候,基本上也通过其他的形式完成了相关工作。虽说有时候可能会效率低一些,但是自动化的实现总会减少我们一般的工作。
使用Python的时候,基本的程序结构中也并没有switch,但是在Python中可以通过使用字典的形式来实现。重新学习第六版的小骆驼时,学到控制结构的时候也读到了说明,Perl中没有switch结构,但是可以通过其他的方式来实现。
刚过两天就看到了小骆驼中的这一段的介绍,不禁在想:我看第三版小骆驼的时候到底看了些什么?到底是自己当时学习的太粗糙还是因为第六版的小骆驼增补了更多的内容?或许两者都有吧!也好,不管是温故而知新还是开卷有益,总归有收获还是好的。
Perl中的类似switch结构是通过given...when的结构来实现的。不同的是,在Perl中的break可以省略,可以减少一点编程人员的代码编写量。还有就是default语句如果处理不当会在使用continue的时候出现异常。这种总结有点抽象,还是写一点代码演示一下。
程序的执行结果如下:
修改代码如下:
程序的执行结果:
从结果可以看出,default语句每次执行的时候都会执行。这里,default实际上相当于另外一个else。如果想让最后一个when条件语句的continue的执行效果跟c语言中的switch效果类似,可以把最后一个continue改成break(缺省)。default在Perl中的功能不像是c语言switch的default那样在缺省的时候其作用,而是在执行到相应的条件分支之后继续执行default,在某些情况下这种方式倒与Python中的起初让人感觉诡异的else结构类似。
重新测试,修改代码如下:
程序的执行结果如下: