Programming in Scala (制御の抽象化) を見ると、同じ効果を持つ次の 2 つの例を見ました。
1. 高階関数
def withPrintWriter(file: File, op: PrintWriter => Unit) {
val writer = new PrintWriter(file)
try {
op(writer)
} finally {
writer.close()
}
}
2. カリー化機能
def withPrintWriter(file: File)(op: PrintWriter => Unit) {
val writer = new PrintWriter(file)
try {
op(writer)
} finally {
writer.close()
}
}
それらの違いは何ですか?両方の方法で常に同じ結果を達成できますか?