博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
perl智能匹配操作符~~
阅读量:5780 次
发布时间:2019-06-18

本文共 1142 字,大约阅读时间需要 3 分钟。

hot3.png

具体应用

案例一,判断某个元素是否在给定的数组中

这算是一个比较常见的问题,如果不用智能匹配操作符的话,我想多数人会这样写程序

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 equal\n" if 1 ~~ 2 ; print "string equal\n" if 'abc' ~~ 'abc' ;

smart matching in details

智能匹配到底能做多少事?这里有个详细的列表。

 在网页上搜索smart matching in detail即可。

转载于:https://my.oschina.net/liangzi1210/blog/132176

你可能感兴趣的文章
vim中代替esc的快捷键
查看>>
JDK文章列表-转载列表
查看>>
指导2:输出到屏幕
查看>>
Intent
查看>>
umask--设置用户文件和目录的文件创建缺省屏蔽值
查看>>
webpack之loader
查看>>
网站速度优化-网络篇
查看>>
Codeforces Round #282 (Div. 2) a
查看>>
Jenkins 技巧及常用插件
查看>>
Android Layer-List实现自定义Shape阴影
查看>>
堆排序
查看>>
Python2操作中文名
查看>>
【工具使用系列】关于 MATLAB 句柄图形对象,你需要知道的事
查看>>
vue获取dom元素
查看>>
测试本机JVM支持的内存大小
查看>>
dubbo+zookeeper集群
查看>>
Linux的原子操作与同步机制
查看>>
存储过程
查看>>
dajngo 权限机制
查看>>
Android.mk文件语法规范及使用
查看>>