當程序越來越大,你需要將代碼細化為小的容易管理的模塊。Scala 支持多種方法來細化程序代碼,這些方法也為有經驗的程序員已經掌握的:使用函數,和 Java 相比,Scala 提供了多種 Java 不支持的方法來定義函數,除了類成員函數外,Scala 還支持嵌套函數,函數字面量,函數變量等。
本篇先介紹類或對象的成員函數。這也是最常見的定義函數的方法。例如下面的例子定義了兩個成員函數:
import scala.io.Source
object LongLines {
def processFile(filename: String, width: Int) {
val source= Source.fromFile(filename)
for (line <- source.getLines())
processLine(filename,width,line)
}
private def processLine(filename:String,
width:Int, line:String){
if(line.length > width)
println(filename + ":" +line.trim)
}
}
成員函數 processFile 使用兩個參數,一個文件名,一個為字符長度,其作用是打印出文件中超過指定字符長度的所有行。它調用另外一個私有成員函數 processLine 完成實際的操作。
這個成員函數,如果作為腳本使用,可以使用如下代碼:
LongLines.processFile(args(0),args(1).toInt)
可以看到 Scala 類成員函數的使用方法和其它面向對象的程序語言如 Java 基本一致。在后面的文章將介紹 Scala 函數不同于 Java 的一些特性。