关于数组的交集和并集问题!
时间:2010-10-15
来源:互联网
#!/usr/bin/perl
@a=qw(1 2 3 4 5);
@b=qw(6 2 7 1 5 8 9);
for(@a,@b)
{
$m{$_}++ && $n{$_}++;
}
@aa=keys %m;
@bb=keys %n;
print "@aa\n";
print "@bb\n";
结果如下:
6 3 7 9 2 8 1 4 5
1 2 5
正是数组的并集和交集。但是其中的 $m{$_}++ && $n{$_}++; 这条语名不理解它的用途,请达人们帮助解读一下。
作者: li_000828 发布时间: 2010-10-15

作者: 珞水的大叔 发布时间: 2010-10-15
回复 珞水的大叔
我感觉应该是两个相同的关联数组,得到的都应该是两个相同的数组的并集,可能是我对 && 符号的理解还不透彻!
作者: li_000828 发布时间: 2010-10-15
你的感觉没错,呵呵
A && B
相当于
if(A != 0){B}
也就是说,如果A == 0,则B不执行
作者: 珞水的大叔 发布时间: 2010-10-15
如果我把上面的代码换成:
$m{$_}++ ;
$n{$_}++;
结果肯定是两个相同的关联数组,而$m{$_}++ && $n{$_}++;为什么会得到不同的结果,还是不太理解?
作者: li_000828 发布时间: 2010-10-15
回复 li_000828
- $m{$_}++ && $n{$_}++
- if($m{$_}++ != 0){
- $n{$_}++;
- }
- if($m{$_} != 0){
- $n{$_}++;
- }
- $m{$_}++;

又及:
判断 A && B 时
我们知道,如果A == 0,那么不管B是什么,A && B的值总为零
同样程序在做判断时,会先检查A,如果A为0,那么直接返回A && B的值为零,就不管B了
作者: 珞水的大叔 发布时间: 2010-10-15
我仔细想了一下,终于理解了,多谢大叔!

作者: li_000828 发布时间: 2010-10-15

作者: 珞水的大叔 发布时间: 2010-10-15
作者: zhlong8 发布时间: 2010-10-15
作者: liyangole 发布时间: 2010-10-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28