Date post: | 08-Jun-2015 |
Category: |
Technology |
Upload: | heiko-seeberger |
View: | 615 times |
Download: | 0 times |
SPRECHEN SIE SCALA?Heiko Seeberger, WeigleWilczekrheinjug Düsseldorf, 18.03.2010
WARUM SCALA?
WARUM SCALA?
Which Programming Language would you usenow on top of JVM, except Java? - Scala.
James Gosling
WARUM SCALA?
Scala, it must be stated, is the currentheir apparent to the Java throne.
Charles Nutter
WARUM SCALA?
I can honestly say if someone had shown me ... Scala ... back in 2003 I'd probably have never created Groovy.
James Strachan
WAS IST SCALA?
ausgereiftobjekt-funktional statisch typisiert
leichtgewichtig
knapp und präzise
ausdrucksstark
pragmatischinteroperabel mit Java
AUSGEREIFT
Seit 2003
Version 2.8
OBJEKT-FUNKTIONAL
Any
AnyVal AnyRef
ScalaObject
java.* refscala.* ref
Int
Long
Unit
scala.* val
Null
Nothing
ALLES IST EIN OBJEKT
1, 2, 3 a, b, cf
FUNKTIONALE PROGRAMMIERUNG
Keine Seiteneffekte
Funktionen höherer Ordnung
STATISCH TYPISIERT
LEICHTGEWICHTIG
Semicolon Inference Type Inference
Implicit ConversionsInfix Operator Notation
AUSDRUCKSSTARK
"Calling Person.toString" when { "first and last name are not-empty" should { "return first name blank last name" in { val person = new Person("John", "Doe") person.toString should be ("John Doe") } }}
KNAPP UND PRÄZISE
public class Person { // Java
private final String firstName; private final String lastName;
public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; }
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }}
class Person(val firstName: String, val lastName: String)
PRAGMATISCH
INTEROPERABEL MIT JAVA
scala> import org.apache.log4j._import org.apache.log4j._
scala> val testLogger = Logger getLogger "test"testLogger: org.apache.log4j.Logger = ...
Wichtig!
LIVE DEMO: HELLO WORLD
LIVE DEMO: OO-GRUNDLAGEN
KlassenKlassen-Parameter Methoden
Default-ArgumenteFelder
Companion Objects
LIVE DEMO: SCALATEST
Test-Werkzeug
DSL-Beispiel
LIVE DEMO: IMPLICIT CONVERSIONS
Für Library-Entwicklung
Skalierbare Sprache
LIVE DEMO: FUNKTIONALE LISTE
Type Inference OperatorenUnveränderlicheObjekte
Funktionen
höherer OrdnungFunktionsliterale Funktionen
LIVE DEMO: TRAITS
Mehrfachvererbung richtig gemacht
Stackabe Modifications
LIVE DEMO: TYP-PARAMETER
Generics richtig gemacht
KovarianzInvarianz
Kontravarianz
Upper Bounds
Lower Bounds
LIVE DEMO: PATTERN MATCHING
Switch richtig gemacht
Constructor PatternVariable Pattern
Sequence Pattern
Wildcard Pattern
Constant Pattern
LIVE DEMO: XML-SUPPORT
Literale in der Sprache
XPath-Abfragen
FRAGEN / DISKUSSION