相同点:
都是带索引的集合。
都是用来存储对象集合的。
都可以通过键来访问。
都可以动态增加内存空间来存储新元素。
都能保存任何类型的对象。
不同点:
数组的键是整数,哈希可以是任何对象。
数组访问效率更高,哈希访问更灵活。
数组用方括号[]来创建和初始化,哈希用花括号{}来创建和初始化。
各自特点:
数组array:
a = ['ant', 'bee', 'cat', 'dog']除了可以这么创建以外,还可以a = %w{ant bee cat dog}方式创建。
数组通过<<方法可以追加对象,a << 'elk'。
哈希hash:
哈希是由键值对组成的,=> 符号左边是键,符号右边是值,键必须唯一,一般用符号作为键,值可以是任意对象。例如 inst_section = {:cello=>'string', :clarinet=>'woodwind', :drum=>'percussion'}。
哈希可以像数组一样用方括号标记法,例如 inst_section[:cello] #=> 'string'