duchess scala-2012

41
Introduktion till Catchy och humoristisk undertitel Johan Andrén @apnylle [email protected] onsdag, 25 april 2012

Upload: johan-andren

Post on 29-Jan-2018

502 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Duchess scala-2012

Introduktion till

Catchy och humoristisk undertitel

Johan Andrén @[email protected]

onsdag, 25 april 2012

Page 2: Duchess scala-2012

Vem är jag?

Fil Mag Datavetenskap

Hyffsat nördig

Mejsla

6 år Java

1 år Scala @apnylle

onsdag, 25 april 2012

Page 3: Duchess scala-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

Page 4: Duchess scala-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

Page 5: Duchess scala-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

Page 6: Duchess scala-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

Page 7: Duchess scala-2012

Jaja, visa kod nu!

onsdag, 25 april 2012

Page 8: Duchess scala-2012

Javakod i ScalaJava Scala

Funktionsdeklaration:

[access] def namn(a: TypFörA, b: TypFörB): Returtyp = {

...

}

onsdag, 25 april 2012

Page 9: Duchess scala-2012

Javakod i ScalaJava Scala

Variabeldeklaration:

var namn: Typ = värde

val namn: Typ = värde

onsdag, 25 april 2012

Page 10: Duchess scala-2012

Javakod i ScalaJava Scala

onsdag, 25 april 2012

Page 11: Duchess scala-2012

Mer kod?

onsdag, 25 april 2012

Page 12: Duchess scala-2012

semikolon: valfritt

onsdag, 25 april 2012

Page 13: Duchess scala-2012

return: valfritt

onsdag, 25 april 2012

Page 14: Duchess scala-2012

funktion som är uttryck

onsdag, 25 april 2012

Page 15: Duchess scala-2012

typer: (oftast) valfria

onsdag, 25 april 2012

Page 16: Duchess scala-2012

typer: (oftast) valfria

onsdag, 25 april 2012

Page 17: Duchess scala-2012

parenteser på parameterlösa funktioner: valfritt

onsdag, 25 april 2012

Page 18: Duchess scala-2012

Uniform Access Principle

onsdag, 25 april 2012

Page 19: Duchess scala-2012

Returtyp på sidoeffekts-funktioner: valfritt

onsdag, 25 april 2012

Page 20: Duchess scala-2012

Default-scope (PreDef)

onsdag, 25 april 2012

Page 21: Duchess scala-2012

Slutresultat

Java Scala

onsdag, 25 april 2012

Page 22: Duchess scala-2012

Typinferens återbesök

items: List[String]a: Int

motsvarar list.get(index) i java

onsdag, 25 april 2012

Page 23: Duchess scala-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

Page 24: Duchess scala-2012

Klasser

onsdag, 25 april 2012

Page 25: Duchess scala-2012

Case Classdeklaration

apply-factory-funktion

accessor

equal+hashcodecopy

toStringunapply/extractor

onsdag, 25 april 2012

Page 26: Duchess scala-2012

onsdag, 25 april 2012

Page 27: Duchess scala-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

Page 28: Duchess scala-2012

onsdag, 25 april 2012

Page 29: Duchess scala-2012

Object

Singleton

Kan skickas runt

Kan vara löv i arvshierarkin

Kan implementera trait/interface

onsdag, 25 april 2012

Page 30: Duchess scala-2012

onsdag, 25 april 2012

Page 31: Duchess scala-2012

Funktionell programmeringMatematisk funktion: sin(x)

Funktioner är också objekt

onsdag, 25 april 2012

Page 32: Duchess scala-2012

Funktionell programmeringsignatur för en parameterlös funktion med Unit som retur

parameterlös funktion med Unit som retur

onsdag, 25 april 2012

Page 33: Duchess scala-2012

FP i Scala-biblioteken

onsdag, 25 april 2012

Page 34: Duchess scala-2012

Syntaktiskt socker

onsdag, 25 april 2012

Page 35: Duchess scala-2012

Jämfört med Java

onsdag, 25 april 2012

Page 36: Duchess scala-2012

Vad istället för hur

onsdag, 25 april 2012

Page 37: Duchess scala-2012

Default-parametrar

onsdag, 25 april 2012

Page 38: Duchess scala-2012

Nästlade funktioner

onsdag, 25 april 2012

Page 39: Duchess scala-2012

Alla uttryck returnerar värden

onsdag, 25 april 2012

Page 40: Duchess scala-2012

Tupler

onsdag, 25 april 2012

Page 41: Duchess scala-2012

Frågor

Johan Andrén @[email protected]

http://www.scala-lang.org

onsdag, 25 april 2012