Scala 3
A Quick Tour
@DanielaSfregola
Scala Italy - October 2021
Slide 2
Slide 2 text
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"
Slide 3
Slide 3 text
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
Slide 4
Slide 4 text
An overview
• https://dotty.ep
fl
.ch/docs/reference/overview.html
Intersection Types
class
A
class
B
def foo: A & B = ???
Slide 11
Slide 11 text
Union Types
class
A
class
B
def foo: A | B = ???
Slide 12
Slide 12 text
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"
)
}
}
Slide 13
Slide 13 text
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 ]
Slide 14
Slide 14 text
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)
Slide 15
Slide 15 text
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)
Procedure Syntax
def echo(str: String)
{
st
r
}
Scala 2.13.4
Slide 23
Slide 23 text
Procedure Syntax
def echo(str: String)
{
st
r
}
Scala 2.13.4
Slide 24
Slide 24 text
Procedure Syntax
def echo(str: String)
{
st
r
}
Scala 3
Slide 25
Slide 25 text
Procedure Syntax
def echo(str: String)
{
st
r
}
Scala 3
Slide 26
Slide 26 text
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
Slide 27
Slide 27 text
Improved Error Messages
def echo(str: String): Unit =
{
st
r
}
def echoTwice(str: String): String =
{
echo(str) match
{
case x: String => s"$x$x
"
}
}
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
Slide 34
Slide 34 text
Thank You!
•Twitter: @DanielaSfregola
•"Get Programming with Scala"
by Manning
35% OFF on EVERYTHING
with code "ctwscalait21"