Home Page Icon
Home Page
Table of Contents for
Professional Scala
Close
Professional Scala
by Ruslan Shevchenko, Mads Hartmann
Professional Scala
Professional Scala
Table of Contents
Professional Scala
Why Subscribe?
PacktPub.com
Contributors
About the Authors
Preface
Who This Book Is For
What This Book Covers
What You Need for This Book
Conventions
Installation and Setup
Installing IntelliJ IDE
Installing Scala plugin (make heading)
Reader Feedback
Customer Support
Downloading the Example Code
Errata
Piracy
Questions
1. Setting up the Development Environment
Simple Program
Definitions: Packages, Imports, and Objects
Object Definition
The main Method
Inside main
Structure of a Scala Project
Basic sbt Commands
Activity: Performing Basic Operations with sbt: Build, Run, Package
IDE
Activity: Loading and Running a Sample Project in the IDE
REPL
Obtaining the Time Request from Our Chatbot Program
Base Syntax
Base Syntax for Definitions
Base Syntax for Expressions
Unit Testing
Adding a Test to Our Project
Inside Tests
Running Tests for Chatbot
Summary
2. Basic Language Features
Objects, Classes, and Traits
Object
Classes
Equality and Case Classes
Pattern Matching
Traits
Self-Types
Special Classes
OO in Our Chatbot
Decoupling Logic and Environment
Sealed Traits and Algebraic Datatypes
Function Calls
Syntax Goodies
Named Parameters
Default Parameters
Currying Forms (Multiple Argument Lists)
Special Magic Methods
Implementing + in CartesianPoint
Parameter-Passing Mode
By Value
By Name
By Need
Creating a Runnable Construction
Printing the log Argument to the Console and File
Summary
3. Functions
Functions
Function Values
Function from an OO Point of View
Conversions
Defining and Measuring the Time of a Unit Function
Syntax Sugar in a Function Definition
Partial Functions
Exploring Pattern Matching
Binding a Sequence of Variables in the Pattern Matcher
Partial Functions in Practice
Representing ChatbotMode as a Partial Function
Implementing RemindStore as a Set of Partial Functions
Using Lifting for Conversations between Total and Partial Functions
Summary
4. Scala Collections
Working with Lists
Constructing Lists
Operations on Lists
Pattern Matching on Lists
First-Order Methods on List
Appending and Concatenation
Taking the Length of a List
Reversing a List
Prefixes and Suffixes
Element Selection
Display
Activity: Creating a New Mode for Chatbot Using Lists
Abstracting on Sequences
The Traversable Trait
Iterators
Streams
Activity: Implementing Fibonacci Series Using Streams and Iterators
Other Collections
Sets
Tuples
Maps
Mutable and Immutable Collections
Activity: Implementing the Tower of Hanoi Problem
Summary
5. Scala Type System
Type Basics and Polymorphism
A Unified Type System
Parametric Polymorphism
Type Inference
Parameterized Types
Bounds
Existential Types
Activity: Generalizing the Implementation of the Binary Tree
Variance
Covariance
Contravariance
Invariance
Activity: Implementing Covariance and the Database for Tools
Advanced Types
Abstract Type Members
Structural Types
Option
Higher Kind Types
Type Erasure
Activity: Finding an Element Based on a Given Predicate
Summary
6. Implicits
Implicit Parameters and Implicit Conversions
Implicit Parameters
Implicit Conversions
Implicit Resolution
Activity: Creation of Extension Methods
Ad Hoc Polymorphism and Type Classes
Types of Polymorphism
Type Classes
Context Bounds and Implicitly
Type Classes in the Standard Library
Activity: Implementing Type Classes to Support Conversion
Summary
7. Functional Idioms
Introduction to Functional Programming Concepts
Pure Functions
Immutability
Implementing the standard library
Higher-Order Functions
Functional Design Patterns
Monoids
Using Monoids to Write Polymorphic Functions
Functor
Monads
Popular Libraries
Validating Data Using Cats
Prerequisites for Using Cats
Introduction to Cats
Validating Data
Validating Using Validated
Communicating with Databases Using Doobie
Prerequisites for Doobie
Doobie
ConnectionIO
Transactor
Selecting Rows
Querying Using Parameters
Deleting, Inserting, and Updating Rows
A Complete Example
Activity: Adding Priority to the Todo List
Summary
8. Domain Specific Languages
DSLs and Types of DSLs
External DSLs
Internal DSLs
ScalaTest – A Popular DSL
Adding ScalaTest to Your Project
Overview of ScalaTest Styles
Activity: Implementing ScalaTest Styles
Language Features for Writing DSLs
Flexible Syntax for Method Invocation
By-Name Parameters
Extension Methods and Value Classes
Writing a Small DSL
Modeling Test Cases
DSL for TestCase
Activity: Creating a DSL to Specify Assertions
Beyond This Book
Various Scala Libraries
Akka
Apache Spark
Shapeless
Uncovered Language Features
Macros
Def Macros
Implicit Macros
Quasiquotes
Reflection
Resources to Keep You Updated
Scala Improvement Process
Scala Times
Summary
Index
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Table of Contents
Next
Next Chapter
Professional Scala
Professional Scala
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset