« Urlaub -> Scala (4) | Main| Armes Microsoft »

Urlaub -> Scala (5)

0
Category
Heute geht es mal in den Datentyp List.... Meine ersten Gehversuche werde ich mit der bekannte case class Derivative  machen
Also dann fange ich einmal an ->

case class Derivative(manufacturer : String, model : String, dailycost : Double )

val l : List[Derivative] = List(Derivative("Mercedes","A-Klasse",10.5),Derivative("Mercedes","C-Klasse",11.5),Derivative("VW","Polo",6.0),Derivative("VW","Golf",9.5))

println(l)

Output:
List(Derivative(Mercedes,A-Klasse,10.5), Derivative(Mercedes,C-Klasse,11.5), Derivative(VW,Polo,6.0), Derivative(VW,Golf,9.5))

Einfach verständlich und lesbar

Jetzt wird gefiltert ->

println(l.filter(x => x.dailycost < 10.0))

Könnte man auch eine Funktion mit einem Parameter definieren und diese reinschreiben

Die Definition der Liste l sieht irgendwie nicht rund aus, man kann es auch so machen ->
val l1 =  Derivative("Mercedes","A-Klasse",10.5) :: Derivative("Mercedes","C-Klasse",11.5) :: Derivative("VW","Polo",6.0) :: Derivative("VW","Golf",9.5) :: Nil

Mit :: kann man ein Element an eine Liste anhängen, man beachte dies ist ein Operator un man kann ihn auch überschreiben

Zwei Listen kann man mit ::: mergen ->
val a = l.remove( x => x.manufacturer == "Mercedes" )
val b = l.remove( x => x.manufacturer == "VW" )

println(a)
println(b)

val c = a ::: b

println(c)

Jetzt aber noch ein Beispiel  was die lesbarkeit von Skala zeigt. Angenommen wir haben eine Klasse Person mit den Properties age,first und valid.
Zu schreiben ist eine Routine, welche eine Liste mit der Personen erzeugt, welche valid sind, nach Alter sortiert und die Vornamen enthält.

In Scala kann dies ungefähr so aussehen:
case class Person(age : Int, first : String, valid : Boolean)
def validByAge(in : List[Person]) = in.filter(_.valid).sort(_.age < _.age).map(_.first)

Das wars

Gruß JJR

Comments

Gravatar Image1 - Bei einer generischen Liste in C# sieht der Input der sort-Methode in etwa so aus ->
new Comparison<Person>(delegate(Person p1,Person p2) { return p1.Age.CompareTo(p2.Age); })

Gruß JJR

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