9.1 容器种类多样
在不同的语言中,容器的名称不同,性质各异。比如,C 语言中的数组、LISP 语言中的列表、Python 语言中的元组以及 Ruby 语言中的数组。即使是名字相同,在不同语言中表达的意思也可能不一样。比如,LISP 语言和 Haskell 语言中的列表,与 Java 语言和 Python 语言中的列表在内部构造上完全不同。不同语言中名称表达的差异是导致混乱的根源 1。因此,本章把这种存放多个元素的东西称为容器。
1LISP 语言中的列表指链表,有时候单说列表指的就是链表。而 Java 语言中的列表(java.util.List)则是一种有能放入多个元素的功能的接口。java.util.LinkedList<E> 就变成一种链表,这和 LISP 语言中的列表概念就比较相近了。元组也是表示能放入多个元素的东西,但 Python 语言中的元组和 Haskell 语言中的元组的共通点就很少。Python 语言中的元组是不可变更的列表,而 Haskell 语言中的列表本来就是不可变更的。Haskell 语言中的元组是可以存放不同类型数值的列表,而 Python 语言中的列表本来就可以存放不同类型的数值。Ruby 语言中的数组(array)是“数组类”,具有 C 语言数组没有的很多功能,反而更加接近 Python 语言中的列表的概念。
