Scala: Beyond the Basics
Pattern matching, extractors, and implicits
No matter how much Scala you already know, there’s always more that you can make it do. In this course, you’ll join Scala expert Daniel Hinojosa for a hands-on, in-depth exploration of Scala for users who want to take their Scala skills up a level. You’ll learn the intricate art of pattern matching, how to create your own extractors, and develop a deeper understanding of Scala implicits, implicit classes, and typeclasses.
The course uses a mix of lectures, Q&A sessions, and realistic code examples. Daniel includes simple quizzes throughout the course to track your progress, and provides hands-on lab exercises.
What you'll learn-and how you can apply it
By the end of this live, hands-on, online course, you’ll understand:
- The basics of pattern matching in Scala
- How to create your own extractor for pattern matching
- How to work with and implement implicits and typeclasses
And you’ll be able to:
- Write more powerful Scala code
- Write Scala code that’s concise, readable, and highly maintainable
- Advise your teammates on powerful Scala advanced features and crucial best practices
This training course is for you because...
- You are an intermediate Scala developer looking for a deeper knowledge in pattern matching, implicits, and typeclasses
- You are interested in the Scala language and want to learn some of the heftier features
- You currently develop in another functional language, and are interested in how Scala handles pattern matching and retrofitting pre-made classes to add some implementations of your own
- Intermediate object oriented and functional programming knowledge
- Basic Scala programming knowledge or completed an introduction to Scala video course, such as O’Reilly’s Beginning Scala Programming.
Prerequisite Setup for Class
Java 8 must be installed! No exceptions!
The following commands must work on your command line:
If these do not render a version, please fix your
JAVA_HOME environment variable and your
Also be sure to install SBT, which is a Scala based build tool since we will require that for our class.
Get the latest sbt at http://www.scala-sbt.org/download.html
Then, if applicable follow directions at this location:
Once done, you should be able to verify that sbt is working by invoking the following at the command line:
Also, be sure to have the LATEST favorite IDE or editor installed with all updates loaded before attendance. That means, Eclipse should be preferably at Neon or you can just download the scala-ide installation. IDEA should be at a 2016.x series. If you are old school and wish to use Vim or Emacs or maybe you are new school and wish to use any of the newer editors like Sublime, Atom, VSCode, etc please have those setup before class and research any Scala code highlighting tools that can be aid in your development and install those plugins. I will be exclusively using both Eclipse and IDEA for our class.
Finally, install respective Scala plugins for your IDEs or Editors. For Eclipse, checkout scala-ide.org for the update site, you call also visit the Eclipse Marketplace and install Scala-IDE plugin.
For IntelliJ IDEA visit the plugins section in your IDE and install the 'Scala' plugin (Do not install the IntelliJ 'sbt' plugin as it is incompatible with the Scala plugin)
NOTE: There is no need to download Scala itself, since SBT will handle the Scala set up for you.
About your instructor
Daniel Hinojosa is a programmer, consultant, instructor, speaker, and recent author. With over 20 years of experience, he does work for private, educational, and government institutions. He is also currently a speaker on the No Fluff Just Stuff tour. Daniel loves JVM languages like Java, Groovy, and Scala, but he also dabbles with non-JVM languages like Haskell, Ruby, Python, LISP, C, and C++.
He is an avid Pomodoro Technique Practitioner and makes every attempt to learn a new programming language every year. Daniel is the author of Testing in Scala and the video Beginning Scala Programming for O’Reilly. For downtime, he enjoys reading, swimming, Legos, football, and barbecuing.
The timeframes are only estimates and may vary according to how the class is progressing
Day One: Pattern Matching
Introduction (60 minutes)
- Refresher on Scala and Setup
- Refresher on Objects and Companion Objects
Basics of Pattern Matching (60 minutes)
- Basics Pattern Matching of Values and Defaults
- Using Pattern Matching in Methods
- Pattern Matching Lists
– Pattern Matching Lists and as a whole
- Pattern Matching Tuples
- Pattern Matching Options
- Pattern Matching Regular Expressions
- Handling Variable Shadowing
- Using Method Variables as Stable Variables
- Pattern Matching Case Classes
- Other Advanced Rules and Miscellanea
Creating your own Pattern Match (60 minutes)
- Creating your own extractors
- Creating your own extractors as a companion object
- Creating list extractors
- Revisiting Tuples, Options, etc.
Day Two: Implicits and Typeclasses
Introduction (60 minutes)
- Introduction to Implicits
- Implicit Parameters
- Implicit Objects
Wrappers, Converters, and Implicitly (60 minutes)
- Implicit Wrappers
- Implicit Classes
- Implicit Converters
- Locating Implicits
– Import Strategies
– Companion Objects
– Package Implicits
- Understanding Predef Implicits
TypeTags and Typeclasses (60 minutes)
- View Bounds
- Context Bounds
- Type Tags