面向Java开发人员的Scala指南 - 集合类型 - 编程入门网
uo;var”。
Scala 的 Array 提供了很多方法,在这里无法一一列出并演示。总的来说,在使用数组时,应该充分地利用 Array 提供的方法,而不是使用传统的 for ... 模式遍历数组并查找或执行需要的操作。最简单的实现方法通常是编写一个函数(如果有必要的话可以使用嵌套,如清单 7 中的 testFilterAndMap 示例所示),这个函数可以执行所需的操作,然后根据期望的结果将该函数传递给 Array 中的 map、filter、foreach 或其他方法之一。 函数性列表 函数编程多年来的一个核心特性就是列表,它和数组在对象领域中享有相同级别的 “内置” 性。列表对于构建函数性软件非常关键,因此,您(作为一名刚起步的 Scala 程序员)必须能够理解列表及其工作原理。即使列表从未形成新的设计,但是 Scala 代码在其库中广泛使用了列表。因此学习列表是非常必要的。 在 Scala 中,列表类似于数组,因为它的核心定义是 Scala 库中的标准类 List[T]。并且,和 Array[T] 相同,List[T] 继承了很多基类和特性,首先使用 Seq[T] 作为直接上层基类。 基本上,列表是一些可以通过列表头或列表尾提取的元素的集合。列表来自于 Lisp,后者是一种主要围绕 “LISt 处理” 的语言,它通过 car 操作获得列表的头部,通过 cdr 操作获得列表尾部(名称渊源与历史有关;第一个可以解释它的人有奖励)。 从很多方面来讲,使用列表要比使用数组简单,原因有二,首先函数语言过去一直为列表处理提供了良好的支持(而 Scala 继承了这些支持),其次可以很好地构成和分解列表。例如,函数通常从列表中挑选内容。为此,它将选取列表的第一个元素 — 列表头部 — 来对该元素执行处理,然后再递归式地将列表的其余部分传递给自身。这样可以极大减少处理代码内部具有相同共享状态的可能性,并且,假如每个步骤只需处理一个元素,极有可能使代码分布到多个线程(如果处理是比较好的)。 构成和分解列表非常简单,如清单 8 所示: 清单 8. 使用列表
面向Java开发人员的Scala指南 - 集合类型(5)时间:2011-01-30 IBM Ted Neward注意,构建列表与构建数组十分相似;都类似于构建一个普通对象,不同之处是这里不需要 “new”(这是 “case 类” 的功能,我们将在未来的文章中介绍到)。请进一步注意 tail 方法调用的结果 — 结果并不是列表的最后一个元素(通过 last 提供),而是除第一个元素以外的其余列表元素。 当然,列表的强大力量部分来自于递归处理列表元素的能力,这表示可以从列表提取头部,直到列表为空,然后累积结果: 清单 9. 递归处理
注意,如果不考虑返回类型 count,Scala 编译器或解释器将会出现点麻烦 — 因为这是一个尾递归(tail-recursive)调用,旨在减少在大量 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |