Scala cookbook

Save time and trouble building object-oriented, functional, and concurrent applications with Scala 3. The latest edition of this comprehensive cookbook is packed with more than 250 ready-to-use recipes and 700 code examples to help you solve the most common problems when working with Scala and its p...

Descripción completa

Detalles Bibliográficos
Otros Autores: Alexander, Alvin, author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Sebastopol, California : O'Reilly Media, Incorporated [2021]
Edición:Second edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009631118206719
Tabla de Contenidos:
  • Intro
  • Copyright
  • Table of Contents
  • Preface
  • Conventions Used in This Book
  • Using Code Examples
  • O'Reilly Online Learning
  • How to Contact Us
  • Acknowledgments
  • Chapter 1. Command-Line Tasks
  • 1.1 Getting Started with the Scala REPL
  • Problem
  • Solution
  • Discussion
  • See Also
  • 1.2 Loading Source Code and JAR Files into the REPL
  • Problem
  • Solution
  • Discussion
  • 1.3 Getting Started with the Ammonite REPL
  • Problem
  • Solution
  • Discussion
  • 1.4 Compiling with scalac and Running with scala
  • Problem
  • Solution
  • Discussion
  • 1.5 Disassembling and Decompiling Scala Code
  • Problem
  • Solution
  • Discussion
  • See Also
  • 1.6 Running JAR Files with Scala and Java
  • Problem
  • Solution
  • Discussion
  • See Also
  • Chapter 2. Strings
  • 2.1 Testing String Equality
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.2 Creating Multiline Strings
  • Problem
  • Solution
  • Discussion
  • 2.3 Splitting Strings
  • Problem
  • Solution
  • Discussion
  • 2.4 Substituting Variables into Strings
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.5 Formatting String Output
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.6 Processing a String One Character at a Time
  • Problem
  • Solution
  • Discussion
  • A Complete Example
  • See Also
  • 2.7 Finding Patterns in Strings
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.8 Replacing Patterns in Strings
  • Problem
  • Solution
  • See Also
  • 2.9 Extracting Parts of a String That Match Patterns
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.10 Accessing a Character in a String
  • Problem
  • Solution
  • Discussion
  • 2.11 Creating Your Own String Interpolator
  • Problem
  • Solution
  • Discussion
  • See Also
  • 2.12 Creating Random Strings
  • Problem
  • Solution
  • Discussion
  • See Also
  • Chapter 3. Numbers and Dates
  • 3.1 Parsing a Number from a String.
  • Problem
  • Solution
  • Discussion
  • See Also
  • 3.2 Converting Between Numeric Types (Casting)
  • Problem
  • Solution
  • Discussion
  • 3.3 Overriding the Default Numeric Type
  • Problem
  • Solution
  • Discussion
  • 3.4 Replacements for ++ and −−
  • Problem
  • Solution
  • Discussion
  • 3.5 Comparing Floating-Point Numbers
  • Problem
  • Solution
  • Discussion
  • See Also
  • 3.6 Handling Large Numbers
  • Problem
  • Solution
  • Discussion
  • See Also
  • 3.7 Generating Random Numbers
  • Problem
  • Solution
  • Discussion
  • 3.8 Formatting Numbers and Currency
  • Problem
  • Solution
  • Locales
  • Discussion
  • 3.9 Creating New Date and Time Instances
  • Problem
  • Solution
  • 3.10 Calculating the Difference Between Two Dates
  • Problem
  • Solution
  • Discussion
  • 3.11 Formatting Dates
  • Problem
  • Solution
  • 3.12 Parsing Strings into Dates
  • Problem
  • Solution
  • Chapter 4. Control Structures
  • for Loops and for Expressions
  • if/then/else-if Expressions
  • match Expressions and Pattern Matching
  • try/catch/finally Blocks
  • while Loops
  • Control Structures as a Defining Feature of Programming Languages
  • 4.1 Looping over Data Structures with for
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.2 Using for Loops with Multiple Counters
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.3 Using a for Loop with Embedded if Statements (Guards)
  • Problem
  • Solution
  • Discussion
  • 4.4 Creating a New Collection from an Existing Collection with for/yield
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.5 Using the if Construct Like a Ternary Operator
  • Problem
  • Solution
  • Discussion
  • 4.6 Using a Match Expression Like a switch Statement
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.7 Matching Multiple Conditions with One Case Statement
  • Problem
  • Solution
  • See Also.
  • 4.8 Assigning the Result of a Match Expression to a Variable
  • Problem
  • Solution
  • Discussion
  • 4.9 Accessing the Value of the Default Case in a Match Expression
  • Problem
  • Solution
  • Discussion
  • 4.10 Using Pattern Matching in Match Expressions
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.11 Using Enums and Case Classes in match Expressions
  • Problem
  • Solution
  • Discussion
  • 4.12 Adding if Expressions (Guards) to Case Statements
  • Problem
  • Solution
  • Discussion
  • 4.13 Using a Match Expression Instead of isInstanceOf
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.14 Working with a List in a Match Expression
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.15 Matching One or More Exceptions with try/catch
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.16 Declaring a Variable Before Using It in a try/catch/finally Block
  • Problem
  • Solution
  • Discussion
  • See Also
  • 4.17 Creating Your Own Control Structures
  • Problem
  • Solution
  • Discussion
  • See Also
  • Chapter 5. Classes
  • Classes and Case Classes
  • 5.1 Choosing from Domain Modeling Options
  • Problem
  • Solution
  • Discussion
  • See Also
  • 5.2 Creating a Primary Constructor
  • Problem
  • Solution
  • Discussion
  • 5.3 Controlling the Visibility of Constructor Fields
  • Problem
  • Solution
  • Discussion
  • See Also
  • 5.4 Defining Auxiliary Constructors for Classes
  • Problem
  • Solution
  • Discussion
  • 5.5 Defining a Private Primary Constructor
  • Problem
  • Solution
  • Discussion
  • 5.6 Providing Default Values for Constructor Parameters
  • Problem
  • Solution
  • Discussion
  • 5.7 Handling Constructor Parameters When Extending a Class
  • Problem
  • Solution
  • Discussion
  • 5.8 Calling a Superclass Constructor
  • Problem
  • Solution
  • Discussion
  • 5.9 Defining an equals Method (Object Equality)
  • Problem
  • Solution
  • Discussion.
  • See Also
  • 5.10 Preventing Accessor and Mutator Methods from Being Generated
  • Problem
  • Solution
  • Discussion
  • 5.11 Overriding Default Accessors and Mutators
  • Problem
  • Solution
  • Discussion
  • 5.12 Assigning a Block or Function to a (lazy) Field
  • Problem
  • Solution
  • Discussion
  • See Also
  • 5.13 Setting Uninitialized var Field Types
  • Problem
  • Solution
  • Discussion
  • See Also
  • 5.14 Generating Boilerplate Code with Case Classes
  • Problem
  • Solution
  • Discussion
  • See Also
  • 5.15 Defining Auxiliary Constructors for Case Classes
  • Problem
  • Solution
  • See Also
  • Chapter 6. Traits and Enums
  • 6.1 Using a Trait as an Interface
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.2 Defining Abstract Fields in Traits
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.3 Using a Trait Like an Abstract Class
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.4 Using Traits as Mixins
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.5 Resolving Method Name Conflicts and Understanding super
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.6 Marking Traits So They Can Only Be Used by Subclasses of a Certain Type
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.7 Ensuring a Trait Can Only Be Added to a Type That Has a Specific Method
  • Problem
  • Solution
  • Discussion
  • 6.8 Limiting Which Classes Can Use a Trait by Inheritance
  • Problem
  • Solution
  • Discussion
  • 6.9 Working with Parameterized Traits
  • Problem
  • Solution
  • Discussion
  • 6.10 Using Trait Parameters
  • Problem
  • Solution
  • Discussion
  • 6.11 Using Traits to Create Modules
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.12 How to Create Sets of Named Values with Enums
  • Problem
  • Solution
  • Discussion
  • See Also
  • 6.13 Modeling Algebraic Data Types with Enums
  • Problem
  • Solution
  • Discussion
  • See Also.
  • Chapter 7. Objects
  • 7.1 Casting Objects
  • Problem
  • Solution
  • Discussion
  • 7.2 Passing a Class Type with the classOf Method
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.3 Creating Singletons with object
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.4 Creating Static Members with Companion Objects
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.5 Using apply Methods in Objects as Constructors
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.6 Implementing a Static Factory with apply
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.7 Reifying Traits as Objects
  • Problem
  • Solution
  • Discussion
  • See Also
  • 7.8 Implementing Pattern Matching with unapply
  • Problem
  • Solution
  • See Also
  • Chapter 8. Methods
  • 8.1 Controlling Method Scope (Access Modifiers)
  • Problem
  • Solution
  • Discussion
  • 8.2 Calling a Method on a Superclass or Trait
  • Problem
  • Solution
  • 8.3 Using Parameter Names When Calling a Method
  • Problem
  • Solution
  • Discussion
  • 8.4 Setting Default Values for Method Parameters
  • Problem
  • Solution
  • Discussion
  • 8.5 Creating Methods That Take Variable-Argument Fields
  • Problem
  • Solution
  • Discussion
  • 8.6 Forcing Callers to Leave Parentheses Off Accessor Methods
  • Problem
  • Solution
  • Discussion
  • See Also
  • 8.7 Declaring That a Method Can Throw an Exception
  • Problem
  • Solution
  • Discussion
  • See Also
  • 8.8 Supporting a Fluent Style of Programming
  • Problem
  • Solution
  • Discussion
  • See Also
  • 8.9 Adding New Methods to Closed Classes with Extension Methods
  • Problem
  • Solution
  • Discussion
  • See Also
  • Chapter 9. Packaging and Imports
  • 9.1 Packaging with the Curly Braces Style Notation
  • Problem
  • Solution
  • Discussion
  • 9.2 Importing One or More Members
  • Problem
  • Solution
  • Discussion
  • 9.3 Renaming Members on Import
  • Problem
  • Solution.
  • Discussion.