« heise developer | Main| Power Shell »

Urlaub -> Scala(7)

0
Category
Heute habe ich mal ein wenig JDBC in Scala gemacht, grundsätzlich sieht ein Java JDBC-Zugriff so oder ähnlich aus:
        Statement st = con.createStatement();
        try {
                ResultSet rs = st.executeQuuery("...");
                try {
                        ...
                        while (rs.next()) {
                                ....
                        }
                } finally {
                        rs.close();
                }
        } finally {
                st.close();
        }  
In dem Java-Code sind zwei Strukturen zu erkennen, welche mir zumindest schon öfters über den Weg gelaufen sind:
  • try { doSomething } finally { x.close }
  • while ( x.doSomething() ) { .... }

In scala ist es möglich seine eigenen Kontrollstrukturen zu basteln.
Fange ich mal mit dem Zweiten an, nennen wir Sie Boolean-Map (bmap), Diese soll eine Liste von einem bestimmten Typ zurückgeben und solange eine bestimmte Testfunktion true ist einen Funktion ausführen.
Sieht dann so aus ->

  def bmapT(test:  => Boolean) ( block: => T) : ListT = {
    val ret = new ListBufferT
    while(test) ret += block
    ret.toList
  }

Den Typ ListBuffer findet man in scala.collection.mutable.ListBuffer.

So jetzt zum ersten, den nenne ich in Anlehnung an C# using ->
  def using[ A <: { def close() : Unit } , B](param : A)(f: A => B) : B =
          try {
                f(param)
          } finally {
            param.close()          
  }

Die Definition von using erst mal etwas vereinfacht -> using[ A , B] definiert, dass diese Methode zwei Parametertypen erwartet, A und B.
A unterliegt jedoch einer Einschränkung -> A <: { def close() : Unit }, welche definiert, dass A eine close-Methode enthalten muß!!!.
Als nächstes wird der Parameter param vom Typ A definiert und eine "Funktion" muß übergeben werden, welche aus einem "A" irgendwie ein "B" macht

In Aktion sieht das ganze dann ungefähr wie in der Datei JDBCTestFirst.scala.



Gruß JJR
P.S.: Am Besten gefällt mir die Methode simQuotes, welche die Summe über 5 Werte auf einmal zurückgibt. Warum gibt es diese Tuples nicht in C#

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2