免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2374 | 回复: 4
打印 上一主题 下一主题

可以用散列的each函数实现赋值吗, [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-05 14:21 |只看该作者 |倒序浏览
现在要实现,生成一 hash, key 从 1 到 100, 对应的值分别是 100 到 1,也就是 $hash{100} = 1, $hash{99} = 2, ...
然后按 key 的大小从小到大输出,想问问大家我们用each读散列就见得多了,能用each实现对散列的赋值吗,例如,


@key=(1..100);
@values=reverse (1..100);
each %hash=(@key,@values);

while( (@k,@v)=each %hash){

    print "@k=>@v\n";

}


当然我们也可以这样做,

for (1..100 {
    $hash{$_} = 100 - $_;
}

for (sort {$a <=> $b} keys %hash) {
    print qq/\$hash{$_} = $hash{$_}\n/
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-11-05 14:29 |只看该作者
@key = (1..100);
for(@key){
        $hash{$_} = $#key-$_+2;
        print "$hash{$_}\n";
}

论坛徽章:
0
3 [报告]
发表于 2007-11-05 14:43 |只看该作者
没明白你想干啥。
你把你的目的说出来就行了,哪有指名道姓非要 each 做的?

论坛徽章:
0
4 [报告]
发表于 2007-11-05 14:48 |只看该作者
楼主的100应该是101,一楼的是对的。
一行搞定的事情,还需要什么each。
@keys = (1 .. 100);
@values = reverse @keys;
$hash{$keys[$_]} = $values[$_] for(0 .. $#keys);
print $_,"==>",$hash{$_},"\n" for (sort {$a<=>$b} keys %hash);

论坛徽章:
0
5 [报告]
发表于 2007-11-05 16:44 |只看该作者
my @num_array = (1..100);
my %num_hash  = map {$_, @num_array - $_ + 1} @num_array;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP