Einfaches Scala-Muster für "using / try-with-resources" (Automatische Ressourcenverwaltung)

C # hatusing mit demIDisposable Schnittstelle. Java 7+ hat die gleiche Funktionalität wietry und derAutoCloseable Schnittstelle. Mit Scala können Sie Ihre eigene Implementierung für dieses Problem auswählen.

scala-arm scheint die beliebte Wahl zu sein und wird von einem der Typesafe-Mitarbeiter gepflegt. Für ein so einfaches Verhalten erscheint es jedoch sehr kompliziert. Zur Verdeutlichung sind die Verwendungsanweisungen einfach, aber es ist ziemlich komplex zu verstehen, wie der gesamte Code intern funktioniert.

Ich habe gerade die folgende supereinfache ARM-Lösung geschrieben:

object SimpleARM {
  def apply[T, Q](c: T {def close(): Unit})(f: (T) => Q): Q = {
    try {
      f(c)
    } finally {
      c.close()
    }
  }
}
Ist so etwas wie ein einfacher Arm von Nutzen? Es scheint, dass die zusätzliche Komplexität zusätzlichen Nutzen bringen sollte. Normalerweise wird die Verwendung einer öffentlichen Open-Source-Bibliothek, die von anderen unterstützt wird, für allgemeine Zwecke gegenüber der Verwendung von benutzerdefiniertem Code dringend empfohlen.Kann jemand Verbesserungen empfehlen? Gibt es irgendwelche Einschränkungen für diesen einfachen Ansatz?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage