perl智能匹配操作符~~
发布时间:2020-12-16 00:12:47 所属栏目:大数据 来源:网络整理
导读:具体应用 案例一,判断某个元素是否在给定的数组中 这算是一个比较常见的问题,如果不用智能匹配操作符的话,我想多数人会这样写程序 my $value = 3 ; my @array = ( 1 , 2 , 3 , 4 , 5 ) ; sub test{ for ( @array ){ if ( $value == $_ ){ print " $value
具体应用案例一,判断某个元素是否在给定的数组中这算是一个比较常见的问题,如果不用智能匹配操作符的话,我想多数人会这样写程序 my $value = 3 ; my @array = (1, 2, 3, 4, 5) ; sub test{ for(@array){ if ($value == $_){ print "$value was found!n" ; return ; } } print "$value was not found!n" ; } 但是,有了智能匹配操作符,程序就简单多了,如下 sub test{ if(@array ~~ $value){ print "$value was found!n" ; } else{ print "$value was not found!n" ; } } 案例二,判断两个数组所有元素是否相同通常的做法是,依次比较两个数组对应位置的元素,如果有不相等的元素,立即返回0,如果都相等,则返回1,程序应该是下面的样子。 sub test{ for my $i (0 .. $#array1){ if($array1[$i] != $array2[$i]){ return 0 ; } } return 1 ; } 有了智能匹配操作符,可以像下面这样写啦,太简单了! sub test{ if(@array1 ~~ @array2){ return 1 ; } else{ return 0 ; } } 案例三,正则表达式匹配~~可以完全代替=~进行匹配,而且比=~更强大,比如要判断数组中是否有满足匹配的元素,直接可以这样写 my @array = ("abcd", "xyz", "123", 456) ; print "found match!n" if @array ~~ /xyz/ ; 没有必要再逐个元素进行匹配了。 案例四,普通比较 ~~还能代替普通的比较操作符,我们知道,在perl中,数字比相等较用==,字符串相等比较用eq,有了~~,就不必考虑类型问题了,它会根据待比较的数选择合适的操作符进行比较的 print "number equaln" if 1 ~~ 2 ; print "string equaln" if 'abc' ~~ 'abc' ; smart matching in details智能匹配到底能做多少事?这里有个详细的列表。 http://perldoc.perl.org/perlsyn.html#Switch-statements?在网页上搜索smart matching in detail即可。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- VB.Net程序设计:Excel的基本操作模式
- perl – 为什么我需要知道有多少测试我将运行Test :: More?
- 由VB的KeyCode和KeyAscii到扫描码、虚拟码的思考
- delphi – 如何使用通用枚举类型调用GetEnumName?
- 什么是将Delphi对象树序列化到XML的好方法 – 使用RTTI而不
- perl简单读写文件
- 如何将Keycloak与Spring集成(无启动)?
- delphi – 如何为RAD Studio的工具组件创建选项卡式视图
- java – 如何在Spring RestTemplate中使用JAXB注释?
- groovy – Spock中双右箭头操作符(>>)的定义是什么?