perl学习笔记-----------------------(14)

    xiaoxiao2021-09-19  64

    哈希是一种数据结构,和数组类似,可以将值存放到其中,或者从中取回值。但是,和数组不同的是,其索引不是数字,而是名字。也就是说,索引(这里,我们将它叫key)不是数字而是任意的唯一的字符串。keys 可以是任意的字符串,你可以使用任何的字符串作为key。但,它们是唯一的。

    另一种思考hash 的方法是,把它看作一堆数据(a barrel of data),每一个数据都有一个相应的标签。可以通过标签访问此标签对应的元素。但其中是没有“第一个”元素的概念的。在数组中,数组元素从0,1,2 开始编号。但在hash中,没有确定的顺序,因此也没有第一个元素。只是一些key/value 对的集合。hash 可以是任意大小,从空hash(没有key/value 对),到任何你内存允许的大小。keys 是唯一的,但values 可以重复。hash 的value 可以是数字,字符串,undef,或者它们的混合,但key 是唯一的。可以把hash 看作一个简单的数据库,其中每一个key 下面可以有一块数据。要访问hash 元素,可以使用下面的语法: $hash{$some_key}

    这和访问数组元素的方法有些类似,这里下标(key)上使用的是花括号({}),而不是方括号([ ])。现在key 的表达式是字符串,而非数字:可以窥探到LarryWall 的设计思想:Larry 认为由于其和普通数组不同,则也应当使用和普通数组不同的符号。

    $family_name{“fred”} = “flintstone”; $family_name{“barney”} = “rubble”; hash 的名字和Perl 中其它的标识符的命名规则是一样的(字母,数字,下划线组成,但不能由数字开头)。由于其属于不同的名字空间,则像hash 元素$family_name{“fred”}和子程序&family_name 之间没有任何的关系。Hash 的key 可以是任意的表达式: $foo = “bar”; print $family_name{$foo . “ney”}; #输出“rubble”

    当将某个值存储在已经存在的hash 元素中,以前的值会被覆盖:

    $family_name{“fred”} = “astaire”; #将新值赋给已经存在的元素 $bedrock = $family_name{“fred”}; #得到“astaire”;以前的值丢失了 可以通过赋值语句对hash 元素赋值: $family_name{“wilma”} = “flintstone”; #新增一个key(也包括value) $family_name{“betty”} .= $family_name{“barney”}; #创建一个新元素 访问不存在的hash 元素得到undef: $grantie = $family_name{“larry”}; #没有larry:得到undef 要引用整个hash,使用百分号(“%”)作为前缀。前面几页中使用的hash 的名字为
    转载请注明原文地址: https://ju.6miu.com/read-677737.html

    最新回复(0)