Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scala 3 - A Quick Tour - Scala Italy 2021
Search
Daniela Sfregola
October 23, 2021
Programming
0
160
Scala 3 - A Quick Tour - Scala Italy 2021
Daniela Sfregola
October 23, 2021
Tweet
Share
More Decks by Daniela Sfregola
See All by Daniela Sfregola
Scala 3 - A Quick Tour - Singapore Scala Programmers 2021
danielasfregola
1
94
ScalaBase 2021- FP: the Good, the Bad, the Ugly
danielasfregola
0
130
Top 5 Cool Things about Scala 3 (that are not enums)
danielasfregola
0
170
LSUG 2019 - FP: The Good, The Bad and The Ugly
danielasfregola
2
170
Scala IO 2019 - FP: The Good, The Bad and The Ugly
danielasfregola
1
730
Scala Days 2019 - Refactor all the things!
danielasfregola
0
250
Refactor all the things!
danielasfregola
0
370
Scala Italy 2018 - Random Data Generation with ScalaCheck
danielasfregola
0
1.6k
Scala Days 2018 Berlin - A Pragmatic Introduction to Category Theory
danielasfregola
2
1.1k
Other Decks in Programming
See All in Programming
Iteratorでページネーションを実現する
sonatard
3
700
pytest プラグインを開発して DRY に自動テストを書こう
inuatsu
2
240
CSC305 Lecture 01
javiergs
PRO
1
140
利用者視点で考える、イテレータとの上手な付き合い方
syumai
4
210
GraphQLとGigaViewer for Apps
numeroanddev
4
880
Go製CLIツールGatling Commanderによる負荷試験実施の自動化
okmtz
3
640
グローバルなソフトウェアテスト組織における課題と戦略 / Challenges and Strategies in a Global Software Testing Organization #mf_techday
imtnd
0
220
Делим тесты между QA и разработчиком
mariyasaygina
0
460
Infrastructure as Code でセキュリティを楽にしよう!
konokenj
5
1.4k
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
260
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
3
390
Modern Functional Fluent CFML REST by Luis Majano
ortus24
0
120
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
167
48k
KATA
mclloyd
27
13k
Atom: Resistance is Futile
akmur
261
25k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
Practical Orchestrator
shlominoach
185
10k
Faster Mobile Websites
deanohume
304
30k
Into the Great Unknown - MozCon
thekraken
30
1.4k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
How to Think Like a Performance Engineer
csswizardry
16
1k
Building Better People: How to give real-time feedback that sticks.
wjessup
360
19k
Designing with Data
zakiwarfel
98
5.1k
Transcript
Scala 3 A Quick Tour @DanielaSfregola Scala Italy - October
2021
Hellooooo • Software Engineer living in London UK •
Scala Lover ❤ • OS Maintainer • Author of "Get Programming with Scala" by Manning 35% OFF on EVERYTHING with code "ctwscalait21"
Scala 3 is here! • After 8 years of work
• 28,000 commits • 7,400 pull requests • 4,100 closed issues • ...released on May 13th, 2021! https://www.scala-lang.org/blog/2021/05/14/scala3-is-here.html
An overview • https://dotty.ep fl .ch/docs/reference/overview.html
@main Annotation object HelloWorld extends App { println("Hello World!" )
}
@main Annotation object HelloWorld extends App { println("Hello World!" )
} object HelloWorld { @main def hello: Unit = { println("Hello world!" ) } }
@main Annotation object HelloWorld extends App { println("Hello World!" )
} object HelloWorld { @main def hello: Unit = { println("Hello world!" ) } } object Hello { @main def echo(n: Int, word: String): Unit = { println(word * n ) } }
Parametrized Traits trait Nameable { def name: Strin g }
Parametrized Traits trait Nameable { def name: Strin g }
trait Nameable(name: String)
Intersection Types class A class B def foo: A &
B = ???
Union Types class A class B def foo: A |
B = ???
Package Object // in file my/demo/package.scal a package m y
package object demo { def customLog(msg: String) { println(s"Customised package log: $msg" ) } }
Package Object // in file my/demo/package.scal a package m y
package object demo { def customLog(msg: String) { println(s"Customised package log: $msg" ) } } [ DROPPED ]
Enums sealed abstract class Color(val rgb: Int) case object Red
extends Color(0xFF0000 ) case object Green extends Color(0x00FF00 ) case object Blue extends Color(0x0000FF)
Enums sealed abstract class Color(val rgb: Int) case object Red
extends Color(0xFF0000 ) case object Green extends Color(0x00FF00 ) case object Blue extends Color(0x0000FF) enum Color(val rgb: Int) : case Red extends Color(0xFF0000 ) case Green extends Color(0x00FF00 ) case Blue extends Color(0x0000FF)
Improved Type Inference Map("Scala" -> 3).map { (k, v) =>
s"$k$v" }
Improved Type Inference Map("Scala" -> 3).map { (k, v) =>
s"$k$v" } Scala 2.13.4
Improved Type Inference Map("Scala" -> 3).map { (k, v) =>
s"$k$v" } Scala 2.13.4
Improved Type Inference Map("Scala" -> 3).map { (k, v) =>
s"$k$v" } Scala 3.0.0
Improved Type Inference Map("Scala" -> 3).map { (k, v) =>
s"$k$v" } Scala 3.0.0 Scala 2.13.4
Procedure Syntax def echo(str: String) { st r }
Procedure Syntax def echo(str: String) { st r } Scala
2.13.4
Procedure Syntax def echo(str: String) { st r } Scala
2.13.4
Procedure Syntax def echo(str: String) { st r } Scala
3
Procedure Syntax def echo(str: String) { st r } Scala
3
Improved Error Messages Arrested Developers What the Scala Compiler &
Lucille Bluth Have In Common by Fiona Condon, NeScala 2017 https://www.youtube.com/watch?v=78iIbiRwFTM
Improved Error Messages def echo(str: String): Unit = { st
r } def echoTwice(str: String): String = { echo(str) match { case x: String => s"$x$x " } }
Improved Error Messages Scala 2.13.4
Improved Error Messages Scala 2.13.4 Scala 3
Strict Equality List("Scala", "3").headOption == "Scala"
Strict Equality List("Scala", "3").headOption == "Scala" Scala 2.13.4
Strict Equality List("Scala", "3").headOption == "Scala" Scala 2.13.4 Scala 3
Compatibility with 2.13 Migrating to Scala 3 is easy* !
* if you are using Scala 2.13 * if you don't have macros in your code Scala 3 Migration Guide https://docs.scala-lang.org/scala3/guides/migration
Thank You! •Twitter: @DanielaSfregola •"Get Programming with Scala" by
Manning 35% OFF on EVERYTHING with code "ctwscalait21"