根据scala函数能作为参数进行传递的方法,我们很容易作出一些很不错的封装。
第一个例子
def withInt(x: Int, f :Int => Int): Unit = {
println(f(x))
}
def add(x: Int) = { x+2 }
withInt(10, add)
第二个例子
import scala.reflect.io.File
import java.util.Scanner
# 这里传入一个Scanner函数, 隐式参数Scanner,返回值为空。
def withScanner(f: File, op: Scanner => Unit) = {
val scanner = new Scanner(f.bufferedReader)
try {
op(scanner)
} finally {
scanner.close()
}
}
withScanner(File("/proc/self/stat"),
scanner => println("pid is " + scanner.next()))