duchess scala-2012
TRANSCRIPT
Introduktion till
Catchy och humoristisk undertitel
Johan Andrén @[email protected]
onsdag, 25 april 2012
Vem är jag?
Fil Mag Datavetenskap
Hyffsat nördig
Mejsla
6 år Java
1 år Scala @apnylle
onsdag, 25 april 2012
DisclaimerOm du fattar några som helst affärsbeslut, skaffar dig
några som helst åsikter (positiva eller negativa) eller blir av med stora mängder fritid som en följd av vad jag sagt idag så tänk på att det är fullt möjligt att jag i framtiden,
om jag konfronteras med det, kan komma att helt förneka att jag någonsin sagt det jag sagt idag - om det
inte handlar om beröm eller någon form av positiv uppmärksamhet i vilket fall jag kan komma att acceptera
att saker jag inte sagt idag tillskrivs mig som åsikter.
onsdag, 25 april 2012
Vad är ?
Ett alternativt språk för JVM
Ett hybridspråk: OO + Funktionellt
Både scriptspråk och kompilerat
Statiskt typat
Nyheterna i Java 8, 9 och 10 - idag
onsdag, 25 april 2012
Jämfört med Java”Pure OO” - Inga primitiver, inga statics
Koncisare syntax - mindre ceremoni/boilerplate
Typinferens
Operatoröverlagring - typ
Lambdauttryck
Pattern matching (switch på stereoider)
”Duck typing”/Structural types
onsdag, 25 april 2012
Interoperabilitet
Kompilerad Scala-kod blir .class-filer
Att ropa på Java-kod, ärva från Javaklasser etc. kräver inget extra arbete
Att ropa på Scala-kod från Java-kod möjligt
onsdag, 25 april 2012
Jaja, visa kod nu!
onsdag, 25 april 2012
Javakod i ScalaJava Scala
Funktionsdeklaration:
[access] def namn(a: TypFörA, b: TypFörB): Returtyp = {
...
}
onsdag, 25 april 2012
Javakod i ScalaJava Scala
Variabeldeklaration:
var namn: Typ = värde
val namn: Typ = värde
onsdag, 25 april 2012
Javakod i ScalaJava Scala
onsdag, 25 april 2012
Mer kod?
onsdag, 25 april 2012
semikolon: valfritt
onsdag, 25 april 2012
return: valfritt
onsdag, 25 april 2012
funktion som är uttryck
onsdag, 25 april 2012
typer: (oftast) valfria
onsdag, 25 april 2012
typer: (oftast) valfria
onsdag, 25 april 2012
parenteser på parameterlösa funktioner: valfritt
onsdag, 25 april 2012
Uniform Access Principle
onsdag, 25 april 2012
Returtyp på sidoeffekts-funktioner: valfritt
onsdag, 25 april 2012
Default-scope (PreDef)
onsdag, 25 april 2012
Slutresultat
Java Scala
onsdag, 25 april 2012
Typinferens återbesök
items: List[String]a: Int
motsvarar list.get(index) i java
onsdag, 25 april 2012
OO i Scala
Snarlikt Java men med knorr
koncisare klassdeklarationer
case-klasser
Inga statiska metoder eller fält
traits istället för interface
onsdag, 25 april 2012
Klasser
onsdag, 25 april 2012
Case Classdeklaration
apply-factory-funktion
accessor
equal+hashcodecopy
toStringunapply/extractor
onsdag, 25 april 2012
onsdag, 25 april 2012
Som ett interface som kan innehålla kod
Flera kan mixas in i med en klass
Tvärgående funktionalitet
Trait
onsdag, 25 april 2012
onsdag, 25 april 2012
Object
Singleton
Kan skickas runt
Kan vara löv i arvshierarkin
Kan implementera trait/interface
onsdag, 25 april 2012
onsdag, 25 april 2012
Funktionell programmeringMatematisk funktion: sin(x)
Funktioner är också objekt
onsdag, 25 april 2012
Funktionell programmeringsignatur för en parameterlös funktion med Unit som retur
parameterlös funktion med Unit som retur
onsdag, 25 april 2012
FP i Scala-biblioteken
onsdag, 25 april 2012
Syntaktiskt socker
onsdag, 25 april 2012
Jämfört med Java
≈
onsdag, 25 april 2012
Vad istället för hur
onsdag, 25 april 2012
Default-parametrar
onsdag, 25 april 2012
Nästlade funktioner
onsdag, 25 april 2012
Alla uttryck returnerar värden
onsdag, 25 april 2012
Tupler
onsdag, 25 april 2012