"mit" - Funktion

Ich definiert habe 'über' - Funktion wie folgt:

def using[A, B <: {def close(): Unit}] (closeable: B) (f: B => A): A =
  try { f(closeable) } finally { closeable.close() }

Kann ich es verwenden, wie:

using(new PrintWriter("sample.txt")){ out =>
  out.println("hellow world!")
}

nun bin ich neugierig, wie definieren Sie 'über' - Funktion, um eine beliebige Anzahl von Parametern, und in der Lage sein, um Ihnen den Zugang separat:

using(new BufferedReader(new FileReader("in.txt")), new PrintWriter("out.txt")){ (in, out) =>
  out.println(in.readLIne)
}
  • Duplizieren: stackoverflow.com/questions/2207425/...
  • Tun closeable.close() innerhalb einer try oder Sie können die Maske Ausnahmen in f(closeable).
  • Im Zusammenhang stackoverflow.com/q/7602804/243233
  • In der Regel, ich nenne es 'schließen', weil es nicht nur verwendet, sondern auch wichtig schließt den stream in der Erwägung, dass true 'verwenden' reserviert für einfache def using[T](t: T)(f: T => Unit): T = {f(t) ; t}, die nützlich in Fällen, wo Sie bekommen Wert und wollen es zurück, als ein Ergebnis, sondern etwas tun, bevor, dass val v = obtain; printlnt(v) ; v. Also, du schreibst, Pass-through(zu erhalten){println}.
  • Implementiert habe ich eine andere version von 'Nutzung', die ist robuster und nutzt zu erfassen Versuchen-Ausnahmen: stackoverflow.com/a/34277491/501113
Schreibe einen Kommentar