scala ist ein der vielen neuen sprachen, die auf der java VM laufen. derzeit erfährt das ding ne menge hype. zwar ist scala statisch typisiert.. aaaber mit einem tollen typensystem, das deduktiv die datentypen erkennt und damit umständliche deklarationen vermeidet. ich habe mir gerade einen text von james strachan durchgelesen. der verdiente java veteran ist begeistert und sieht in scala einen möglichen nachfolger für java.
danach habe ich gleich einen seiner links zu den IBM developerWorks angeklickt und bin ganz schön ins kichern geraten. aber seht selbst:
def filterFeed(feed:Elem, feedId:String):Seq[Node] = {
var results = new Queue[Node]()
feed\"entry" foreach{(entry) =>
if (search(entry\"service"\"id" last, feedId)){
results += (entry\"user"\"nickname").last
}
}
return results
}
def search(p:Node, Name:String):Boolean = p match {
case <id>{Text(Name)}</id> => true
case _ => false
}
der code soll ein xml dokument filtern, indem es alle tags /entry/service/id mit einer zeichenkette vergleicht. das sieht aus wie, ähm, eine perleske parodie auf eine skriptsprache. faszinierend die search() funktion: man baut sich ein tag mit einem content-node, den man mit dem test-node vergleicht. warum nicht direkt den text vergleichen? naja und das case _ soll so eine art default sein… sieht so die zukunft von java aus? manchen leutchen ist einfach nicht zu helfen.
achja. hier das zitat zur fantastischen mustererkennung:
This function uses one of the most powerful features of Scala, its pattern matching. In this case, you compare the input node against a node named id that has a child text node made of the Name string passed in to the function. If there is a match, the function returns true. The syntax case _ matches everything else. The _ is again being used a wildcard in Scala. A statement like case _ is similar to a default clause in a case statement in Java or C++ code. This is a pretty simple example of the power of pattern matching in Scala



Kommentare