E-Book Overview
Beginning Scala, 2nd Edition takes a down-to-earth approach to teaching Scala that leads you through simple examples that can be combined to build complex, scalable systems and applications. This book introduces you to the Scala programming language, its object-oriented and functional programming characteristics, and then guides you through Scala constructs and libraries that allow you to assemble small components into high-performance, scalable systems. You will learn why Scala is judiciously used for critical business applications by leading companies such as Twitter, LinkedIn, Foursquare, the Guardian, Morgan Stanley, Credit Suisse, UBS, and HSBC. Scala is a multi-paradigm programming language that combines both functional and object-oriented features. Moreover, this highly scalable language lends itself well to building cloud-based/deliverable Software as a Service (SaaS) online applications.
E-Book Content
www.it-ebooks.info
For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them.
www.it-ebooks.info
Contents at a Glance About the Authors�������������������������������������������������������������������������������������������������� xiii About the Technical Reviewer���������������������������������������������������������������������������������xv Introduction�����������������������������������������������������������������������������������������������������������xvii ■■Chapter 1: Getting Started with Scala ������������������������������������������������������������������ 1 ■■Chapter 2: Basics of Scala ���������������������������������������������������������������������������������� 13 ■■Chapter 3: Object Orientation in Scala���������������������������������������������������������������� 33 ■■Chapter 4: Functional Programming in Scala������������������������������������������������������ 57 ■■Chapter 5: Pattern Matching������������������������������������������������������������������������������� 73 ■■Chapter 6: Scala Collections�������������������������������������������������������������������������������� 91 ■■Chapter 7: Traits������������������������������������������������������������������������������������������������ 121 ■■Chapter 8: Scala Type System��������������������������������������������������������������������������� 133 ■■Chapter 9: Scala and Java Interoperability������������������������������������������������������� 153 ■■Chapter 10: DSL and Parser Combinator����������������������������������������������������������� 165 ■■Chapter 11: Simple Build Tool - SBT������������������������������������������������������������������ 179 ■■Chapter 12: Scala for Web Application�������������������������������������������������������������� 191 ■■Chapter 13: Scala Best Practices ��������������������������������������������������������������������� 219 Index��������������������������������������������������������������������������������������������������������������������� 235
iii
www.it-ebooks.info
Introduction Ouch! That hurts my brain! Stop making me think differently. Oh, wait . . . it hurts less now. I get it. This different way of solving the problem has some benefits. I felt that way after my first year of law school. I felt that way for a while when I began coding Scala. What’s this Option thingy? Give me back my null! How do you get the fifth element from a Seq? On and on it went. Day after day of head-splitting paradigm changing and breaking 30 years of coding habits, I am somewhat at peace with the Scala way of coding. Yes, my coding habits were borne out of 6800 machine code coding. Talk about imperative coding. That’s all you’ve got when you’ve got an accumulator, a program counter, and an index register. I grew up through BASIC,