関数にリソースを貸し出すことからローンパターンと言われるらしい。
  def main(args: Array[String]) {
    // 第二引数に、PrintWriterを受けて
    // ファイル出力を行う関数を指定する。
    writeFile(new File("test.txt"),
      writer => writeData(writer))
  }
  private def writeData(printWriter: PrintWriter) {
    println("wite start")
    printWriter.println("1")
    printWriter.println("2")
    printWriter.println("3")
    printWriter.println("4")
    printWriter.println("5")
    println("wite end")
  }
  def writeFile(file: File, write: PrintWriter => Unit) {
    // リソースを開く
    println("open file.")
    val writer = new PrintWriter(file)
    try {
      // 第二引数の関数にリソースを貸し出す。
      write(writer)
    } finally {
      // 最後にリソースを閉じる
      println("close file.")
      writer.close();
    }
  }
実行結果
ファイルオープン→書き込み→ファイルクローズの順に処理が行われていることがわかる。open file. wite start wite end close file.
