Skip to main content

Scala is a general-purpose programming language principally targeting the Java Virtual Machine. Designed to express common programming patterns in a concise, elegant, and type-safe way, it fuses both imperative and functional programming styles. Its key features are: an advanced static type system with type inference; function types; pattern-matching; implicit parameters and conversions; operator overloading; full interoperability with Java; concurrency

Scala is a general-purpose programming language principally targeting the Java Virtual Machine. Designed to express common programming patterns in a concise, elegant, and type-safe way, it fuses both and styles. Its key features are:

  • Static typing
  • Advanced type system with type inference and declaration-site variance
  • Function types (including anonymous) which support lexical closures
  • Pattern-matching
  • Implicit parameters and conversions which support the typeclass and enrich-my-library patterns
  • Mixin composition
  • Full interoperability with Java
  • Powerful concurrency constructs
  • Advanced language constructs such as delimited continuations and an experimental macro system

For more information, see the official Scala Introduction and Scala Documentation.

To search for Scala symbols such as => in Stack Overflow, you can use symbolhound search.

To search Scala documentation, you can use scalex.

A community list of available libraries is available at Awesome Scala

There is Scala Library Index by Scala Center: Scaladex.

Free Scala programming books and guides

Stack Overflow Scala Tutorial

  1. Introduction to Scala
  2. Variables/values
  3. Methods
  4. Literals, statements and blocks
  5. Loops/recursion
  6. Data structures / Collections
  7. For-comprehension
  8. Enumeration
  9. Pattern matching
  10. Classes, objects and types
  11. Packages, imports and visibility identifiers
  12. Inheritance
  13. Extractors
  14. Case classes
  15. Parameterized types
  16. Traits
  17. Self references
  18. Error handling
  19. Type handling
  20. Annotations
  21. Functions/Function literals
  22. Type safety
  23. Implicits
  24. Reflection
  25. Enrich-my-library pattern (formerly known as pimp-my-library)
  26. Concurrency overview
  27. Actors
  28. Use Java from Scala and vice versa
  29. XML literals
    • Explanation
  30. Scala Swing
  31. Type Programming
  32. Functional Scala

Further learning

  1. Learning Resources
  2. REPL
  3. Working with scalac and scala
  4. Operator precedence
  5. Scala style
  6. Functional Programming Principles in Scala, a functional programming course on Coursera taught by Martin Odersky, the creator of Scala.
  7. Principles of Reactive Programming, a reactive functional programming course on Coursera taught by Martin Odersky, Erik Meijer, Roland Kuhn.
  8. Parallel Programming, a parallel programming course on Coursera taught by Viktor Kuncak and Aleksandar Prokopec.

Code Language (used for syntax highlighting): lang-scala