Scala编程(第4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

8.1 方法

定义函数最常用的方式是作为某个对象的成员,这样的函数被称为方法method)。例如,示例8.1展示了两个方法,合在一起读取给定名称的文件并打印出所有超过指定长度的行。在被打印的每一行之前都加上了该行所在的文件名。

示例8.1 带有私有processLine方法的LongLines

processFile方法接收filenamewidth作为参数。它从文件名创建了一个Source对象,然后在for表达式的生成器中,对源文件调用getLines。正如在第3章的第12步中提到的,getLines返回一个在每次迭代从文件读取一行并去掉最后的换行符的迭代器。for表达式通过调用助手方法processLine来处理每一行文本。processLine方法接收三个参数:filenamewidthline。它首先检查当前行的长度是否大于给定的宽度,如果是,则打印出文件名、一个冒号和该行文本。

为了从命令行使用LongLines,我们将创建一个以首个命令行参数作为宽度(width),并将后续入参当作文件名(filename)的应用程序:[1]

以下是如何用这个应用程序来找到LongLines.scala中长度超过45个字符的行(只有一行满足要求):

到目前为止,你看到的都跟使用任何面向对象语言的做法非常相似。不过,在Scala中函数这个概念比方法更通用。在接下来的几节我们将介绍Scala中表示函数的其他形式。