用given-when 构造switch语句

1. 更少的输入

use 5.010;

given ($dog) {

  when ('Fido')      {}

  when ('Rover')     {}

  when ('Spot')      {}

  default            {} ;



};

2. 智能匹配

use 5.010;



$dog ~~  /$regex/      #dog 能被正则表达式匹配

$dog ~~  %Dogs         #$dog 是%Dogs 中的键值

$dog ~~ @Dogs          #$dog 是@Dogs 中的元素

@Dogs ~~ /$regex/      #@Dogs中至少有一个元素与正则匹配

%Dogs  ~~ /$regex/     #%Dogs 中至少有个一key与正则匹配

 

3.多分在处理

use 5.010;

given ($dog) {

  when ('Fido')   { ...;break}

  when('Rover') {....;break}

  default           {...} ;

};

利用continue 语句,就可以使程序在当前when块运算后进入下一个when继续比较。

 

4.代码组合

可以在when之间自由输入任意代码,哪怕在中途修改主题变量也没问题

use 5.010;



my $dog = 'Spot' ;

given ($dog) {

  say "I am ....." ;

  when  (/o/){  ;coninue}

  say "....";

   when (/t/) {..;coninue}

   $_=tr/p/d/;

  when (/d/) (..;coninue)





};

 

5.对列表进行分支判断

在foreach 循环中我们也能用when,这和在given中相似,只不过它是依次从列表中取测试目标

use 5.010;



foreach (@array) {

  when (/....$/)  {}

  when (//..$)    {}

}

你可能感兴趣的:(switch)