9.7 小结

我们在这一章讲的是 Julia 中最强大的容器——数组。它也是一种相对复杂的容器。它的特点可以由三个词组来概括,即:可变的对象、同类型的元素值,以及多维度的容器。其中的最后一个特点在 Julia 预定义的容器中是独有的。

数组的类型字面量只能体现它的元素类型和维数,而不能体现元素的顺序以及各个维度上的元素数量。不过多维数组在各个维度上的元素数量仍需满足既定的规则。

我们可以使用一般表示法表示一维数组和二维数组。这涉及到了元素值分隔符“,”、纵向拼接符“;”以及作为横向拼接符的空格。不过,对于三维数组,这种表示法就无能为力了。

我们可以利用数组的构造函数来创建拥有更多维度的数组。在这里,我们需要注意的是,传入的参数值对于新数组的尺寸以及其中元素值的影响。除了构造函数,我们还可以使用zerosonesfill之类的函数创建多维数组。

Julia 为我们提供了专门的函数以获取一个数组的元素类型、维数、元素值总数以及它在各个维度上的长度。我们在访问数组中的元素值的时候有几种方式可供选择,比如使用索引表达式,又比如使用for语句进行迭代。注意,Array类型的数组拥有两种索引,即:线性索引和笛卡尔索引。我们可以利用它们在这类数组上进行灵活的定位,并同时获取到在不同位置上的多个元素值。除此之外,我们还可以通过一些搜索函数查找一个或多个值在某个数组中的索引号。

对于数组中元素值的修改,我们同样可以使用索引表达式。索引表达式在这方面的不俗表现也同样依托于强悍的索引机制。另外,我们还可以使用视图来查看和修改数组中的元素值。它基于的依然是索引机制。它的一个显著优势是,我们可以通过视图对原有数组中的元素值进行完全的替换。

最后,我们还速览了一些可以对数组进行修改的专用函数。在通常情况下,我们用到这些函数的机会可能并不多。但是在一些专业的且目前很热门的领域里,它们却可以带来相当大的便利。

我们用了一整章的篇幅讨论了数组本身,以及怎样才能正确地表示、构造数组和存取其中的元素值。在看过这一章之后,你应该就可以比较熟练地运用数组了。不过,我们还应该去了解更多关于数组的知识。在下一章,我会继续和你讨论几个与之有关的重要专题。虽然这些专题的内容并不像本章所讲的那么基础,但是它们却可以在很大程度上提高你的编码效率。