Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1736395
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: Python/Ruby

2012-03-26 09:36:36

用%name来定义一个哈希表,用$name{key}来取值:


  1. %hash =
  2.     ("a", 7,
  3.      "ef", 9,
  4.      35, "hello");
  5. print $hash{"a"}."\n"; # 7
  6. $a = 35;
  7. print $hash{$a}."\n"; # "hello"
  8. print $hash{"notdefined"}."\n"; # null

更直观构建哈希表的方式是:
  1. %hash = (
  2.     "a" => 7,
  3.     "ef" => 9,
  4.     35 => "hello"
  5. );

增删哈希表的元素:
  1. $hash{"new"} = "added";
  2. delete $hash{"new"};

数组可以赋给一个哈希表:
  1. @array = ("a", 1, "b", 2);
  2. %hash = @array;
  3. print $hash{"b"}; # 2

  4. keys和values可以分别得到两个数组:

  5. %hash = (
  6.     "a" => 7,
  7.     "ef" => 9,
  8.     35 => "hello"
  9. );
  10. @keys = keys(%hash); # 35 ef a
  11. @values = values(%hash); # hello 9 7

  12. foreach $key (@keys) {
  13.    print $hash{$key};
  14. }

上面通过keys遍历哈希表的方式太低效,Perl提供了一个更高效的方式:
  1. while (($key, $value) = each(%hash)) {
  2.     print "$key=>$value\n";
  3. }

在each到达底部后并返回0后,下次再次调用each会从头开始遍历。在使用each的时候,不能添加或删除元素,否则会出现无法预料的结果。
阅读(1534) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~