Urlaub -> Scala (1)
Scala
Hier das Script, welches ich heute abend ausprobiert habe ->
import scala.io._
def toInt(in : String) : Option[Int] =
try {
Some(Integer.parseInt(in.trim))
} catch {
case e: NumberFormatException => None
}
def sum(in : Seq[String]) =
{
val ints = in.flatMap( s => toInt(s))
ints.foldLeft(0)((a,b) => a + b)
}
val input = Source.fromFile("input.txt")
val lines = input.getLines.collect
println( "Sum " + sum(lines))
Kategorie Hier das Script, welches ich heute abend ausprobiert habe ->
import scala.io._
def toInt(in : String) : Option[Int] =
try {
Some(Integer.parseInt(in.trim))
} catch {
case e: NumberFormatException => None
}
def sum(in : Seq[String]) =
{
val ints = in.flatMap( s => toInt(s))
ints.foldLeft(0)((a,b) => a + b)
}
val input = Source.fromFile("input.txt")
val lines = input.getLines.collect
println( "Sum " + sum(lines))
Erste Zeile, mal was importieren
Man beachte den _ in Java würde man ein * schreiben...
Option[int] -> Option ist eine Klasse, welche ein Element oder Kein Element enthalten kann. Enthält Option kein Element, so ist es gleich dem Singelton None.
Some ist abgeleitet von Option und muß ein Elment enthalten und kann somit an Option zugewiesen werden.
Sonst ist alles mit der toInt-Methode klar, aber fehlt da nicht was? Ein return?
Nein es fehlt kein return, da der letzte ausgewertete Ausdruck zurückgegeben wird... spart also pro Methode mit Rückgabewert mindestens 6 Zeichen
Jetzt schaue ich noch ein bisserl 24, den Rest erkläre ich vielleicht morgen
Ach so, foldLeft, geht einfach vom Anfang der Liste durch und summiert die Werte auf. Der Trick, man definiert eine Funktion, welche auf einem Tupel basiert.
So jetzt Nächtle!
Gruß JJR
P.S.: Wer scala ohne Eclipse-IDE usw. verwenden möchte, TEXTPAD hat eine Syntax-Definition!
Man beachte den _ in Java würde man ein * schreiben...
Option[int] -> Option ist eine Klasse, welche ein Element oder Kein Element enthalten kann. Enthält Option kein Element, so ist es gleich dem Singelton None.
Some ist abgeleitet von Option und muß ein Elment enthalten und kann somit an Option zugewiesen werden.
Sonst ist alles mit der toInt-Methode klar, aber fehlt da nicht was? Ein return?
Nein es fehlt kein return, da der letzte ausgewertete Ausdruck zurückgegeben wird... spart also pro Methode mit Rückgabewert mindestens 6 Zeichen
Jetzt schaue ich noch ein bisserl 24, den Rest erkläre ich vielleicht morgen
Ach so, foldLeft, geht einfach vom Anfang der Liste durch und summiert die Werte auf. Der Trick, man definiert eine Funktion, welche auf einem Tupel basiert.
So jetzt Nächtle!
Gruß JJR
P.S.: Wer scala ohne Eclipse-IDE usw. verwenden möchte, TEXTPAD hat eine Syntax-Definition!