{"product_id":"139425","title":"Programming in Scala 4\/e ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPBvo6e2LgFZhAyADjUNIgZgAVkt.png?v=1765074837\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Programming in Scala 4\/e \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/96640057\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e Scala is a language that combines several functional and object-oriented techniques to create a concise yet expressive language comparable to dynamic languages ​​like Ruby or Python.\u003cbr\u003e Scala is widely used in cutting-edge fields such as big data and machine learning. \u003cbr\u003eWritten by Martin Odersky, the creator of Scala, this book is the bible of the Scala language, perfectly explaining various aspects of Scala.\u003cbr\u003e\u003cbr\u003e This book covers the basic syntax of Scala, including functions, traits, implicit conversions, and modules, as well as how to use collections, the internal structure of collections, and how to utilize object-oriented and functional programming.\u003cbr\u003e Additionally, the second edition's content, which covers concurrent programming using futures, combinations with Java, parsing, and applications such as GUI programming, has been revised and supplemented, and content on string interpolation, wildcard types, and the revised collection framework has been added to match the latest version.\u003cbr\u003e By following along step by step, you can become a skilled Scala developer, and at the same time, you can learn how to naturally integrate various programming paradigms into one language and how to utilize each one appropriately.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e  \u003cli\u003eYou can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindex\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Chapter 1.\u003cbr\u003e Extensible language\u003cbr\u003e 1.1 The language that grows in your mind\u003cbr\u003e 1.2 Why Scala is Extensible\u003cbr\u003e 1.3 Why Scala?\u003cbr\u003e 1.4 Roots of Scala\u003cbr\u003e 1.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 2.\u003cbr\u003e First Steps in Scala\u003cbr\u003e 2.1 Step 1: Learn how to use the Scala interpreter\u003cbr\u003e 2.2 Step 2: Let's define variables\u003cbr\u003e 2.3 Step 3: Let's define a function\u003cbr\u003e 2.4 Step 4: Let's write a Scala script\u003cbr\u003e 2.5 Step 5: Let's loop with while and make a decision with if.\u003cbr\u003e 2.6 Step 6: Let's iterate using foreach and for.\u003cbr\u003e 2.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 3.\u003cbr\u003e Scala's second step\u003cbr\u003e 3.1 Step 7: Let's specify a type parameter for the array.\u003cbr\u003e 3.2 Step 8: Let's use a list\u003cbr\u003e 3.3 Step 9: Let's use tuples\u003cbr\u003e 3.4 Step 10: Let's use sets and maps.\u003cbr\u003e 3.5 Step 11: Learn to recognize functional styles\u003cbr\u003e 3.6 Step 12: Read the contents of the file line by line\u003cbr\u003e 3.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 4.\u003cbr\u003e Classes and Objects \u003cbr\u003e4.1 Classes, fields, and methods\u003cbr\u003e 4.2 Semicolon Inference\u003cbr\u003e 4.3 Singleton Objects\u003cbr\u003e 4.4 Scala Applications\u003cbr\u003e 4.5 App Traits\u003cbr\u003e 4.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 5.\u003cbr\u003e Basic types and operations\u003cbr\u003e 5.1 Basic Types\u003cbr\u003e 5.2 Literal\u003cbr\u003e 5.3 String Interpolation\u003cbr\u003e 5.4 Operators are methods\u003cbr\u003e 5.5 Arithmetic Operations\u003cbr\u003e 5.6 Relational and Logical Operations\u003cbr\u003e 5.7 Bit Operations\u003cbr\u003e 5.8 Object Identity\u003cbr\u003e 5.9 Operator Precedence and Associativity\u003cbr\u003e 5.10 Rich Rapper\u003cbr\u003e 5.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 6.\u003cbr\u003e functional objects\u003cbr\u003e 6.1 Fraction Class Specification\u003cbr\u003e 6.2 Rational Creation\u003cbr\u003e 6.3 Reimplementing the toString method\u003cbr\u003e 6.4 Check prerequisites\u003cbr\u003e 6.5 Added fields\u003cbr\u003e 6.6 Self-reference\u003cbr\u003e 6.7 Auxiliary Constructors\u003cbr\u003e 6.8 Private Fields and Methods\u003cbr\u003e 6.9 Operator Definitions\u003cbr\u003e 6.10 Identifiers in Scala\u003cbr\u003e 6.11 Method Overloading\u003cbr\u003e 6.12 Implicit Type Conversion\u003cbr\u003e 6.13 Precautions\u003cbr\u003e 6.14 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 7.\u003cbr\u003e Built-in control statements\u003cbr\u003e 7.1 if expressions\u003cbr\u003e 7.2 while loop\u003cbr\u003e 7.3 for expressions\u003cbr\u003e 7.4 Handling exceptions with try expressions\u003cbr\u003e 7.5 match expression\u003cbr\u003e 7.6 Living without break and continue statements\u003cbr\u003e 7.7 Variable Scope\u003cbr\u003e 7.8 Refactoring Imperative Style Code\u003cbr\u003e 7.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 8. \u003cbr\u003eFunctions and closures\u003cbr\u003e 8.1 Method\u003cbr\u003e 8.2 Local functions\u003cbr\u003e 8.3 First-class hierarchical functions\u003cbr\u003e 8.4 Simple form of function literal\u003cbr\u003e 8.5 Positional Indicator Grammar\u003cbr\u003e 8.6 Partially applied function\u003cbr\u003e 8.7 Closure\u003cbr\u003e 8.8 Special forms of function calls\u003cbr\u003e 8.9 Tail Recursion\u003cbr\u003e 8.10 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 9.\u003cbr\u003e Flow control abstraction\u003cbr\u003e 9.1 Reducing Code Duplication\u003cbr\u003e 9.2 Simplifying Client Code\u003cbr\u003e 9.3 Curling\u003cbr\u003e 9.4 Writing a New Control Structure\u003cbr\u003e 9.5 Calling parameters by name\u003cbr\u003e 9.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 10.\u003cbr\u003e Inheritance and composition\u003cbr\u003e 10.1 2D Layout Library\u003cbr\u003e 10.2 Abstract Classes\u003cbr\u003e 10.3 Defining a method without parameters\u003cbr\u003e 10.4 Class Extensions\u003cbr\u003e 10.5 Method and Field Overrides\u003cbr\u003e 10.6 Defining parameter fields\u003cbr\u003e 10.7 Calling the superclass constructor\u003cbr\u003e 10.8 Using the override modifier\u003cbr\u003e 10.9 Polymorphism and Dynamic Binding\u003cbr\u003e 10.10 Final Member Declaration\u003cbr\u003e 10.11 Using Inheritance and Composition\u003cbr\u003e 10.12 Above, beside, toString implementation\u003cbr\u003e 10.13 Defining a Factory Object\u003cbr\u003e 10.14 Height and Width Adjustment\u003cbr\u003e 10.15 Gather and test\u003cbr\u003e 10.16 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 11.\u003cbr\u003e Scala's hierarchy \u003cbr\u003e11.1 Scala's class hierarchy\u003cbr\u003e 11.2 How did you implement multiple base classes?\u003cbr\u003e 11.3 Type on the floor\u003cbr\u003e 11.4 Defining Your Own Value Class\u003cbr\u003e 11.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 12.\u003cbr\u003e trait\u003cbr\u003e 12.1 How Traits Work\u003cbr\u003e 12.2 Simple and Rich Interface\u003cbr\u003e 12.3 Example: Rectangle Object\u003cbr\u003e 12.4 Ordered Traits\u003cbr\u003e 12.5 Stacking Changes Using Traits\u003cbr\u003e 12.6 Why is multiple inheritance not allowed?\u003cbr\u003e 12.7 To Trait or Not to Trait, That Is the Question\u003cbr\u003e 12.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 13.\u003cbr\u003e Packages and Imports\u003cbr\u003e 13.1 Writing Code Inside a Package\u003cbr\u003e 13.2 Concise Access to Related Code\u003cbr\u003e 13.3 Import\u003cbr\u003e 13.4 Implicit Imports\u003cbr\u003e 13.5 Access modifiers\u003cbr\u003e 13.6 Package Objects\u003cbr\u003e 13.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 14.\u003cbr\u003e Assertions and Tests\u003cbr\u003e 14.1 Assertive statements\u003cbr\u003e 14.2 Testing in Scala\u003cbr\u003e 14.3 Failure reporting that provides sufficient information\u003cbr\u003e 14.4 Testing with Specifications\u003cbr\u003e 14.5 Property-Based Testing\u003cbr\u003e 14.6 Test Organization and Execution\u003cbr\u003e 14.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 15.\u003cbr\u003e Case classes and pattern matching\u003cbr\u003e 15.1 A simple example \u003cbr\u003e15.2 Types of Patterns\u003cbr\u003e 15.3 Pattern Guard\u003cbr\u003e 15.4 Pattern Overlapping\u003cbr\u003e 15.5 Sealed Class\u003cbr\u003e 15.6 Option Type\u003cbr\u003e 15.7 Patterns are everywhere\u003cbr\u003e 15.8 Complex Examples\u003cbr\u003e 15.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 16 List\u003cbr\u003e 16.1 List Literals\u003cbr\u003e 16.2 List Type\u003cbr\u003e 16.3 Creating a list\u003cbr\u003e 16.4 Basic List Operations\u003cbr\u003e 16.5 List Patterns\u003cbr\u003e 16.6 Primary method of the List class\u003cbr\u003e 16.7 Higher-order methods of the List class\u003cbr\u003e 16.8 Methods of the List Object\u003cbr\u003e 16.9 Processing Multiple Lists Together\u003cbr\u003e 16.10 Understanding Scala's Type Inference Algorithm\u003cbr\u003e 16.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 17.\u003cbr\u003e Collection\u003cbr\u003e 17.1 Sequence\u003cbr\u003e 17.2 Sets and Maps\u003cbr\u003e 17.3 Mutable and Immutable Collections\u003cbr\u003e 17.4 Collection Initialization\u003cbr\u003e 17.5 Tuples\u003cbr\u003e 17.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 18.\u003cbr\u003e mutable objects\u003cbr\u003e 18.1 What makes an object mutable?\u003cbr\u003e 18.2 Reassignable Variables and Properties\u003cbr\u003e 18.3 Case Study: Discrete Event Simulation\u003cbr\u003e 18.4 Language for Digital Circuits\u003cbr\u003e 18.5 Simulation API\u003cbr\u003e 18.6 Circuit Simulation\u003cbr\u003e 18.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 19.\u003cbr\u003e Type parameterization\u003cbr\u003e 19.1 Functional Queues\u003cbr\u003e 19.2 Information Hiding\u003cbr\u003e 19.3 Modified notation \u003cbr\u003e19.4 Checking the mutated notation\u003cbr\u003e 19.5 Lower bound\u003cbr\u003e 19.6 Anticommutation\u003cbr\u003e 19.7 Private data of objects\u003cbr\u003e 19.8 Upper Bound\u003cbr\u003e 19.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 20.\u003cbr\u003e abstract member\u003cbr\u003e 20.1 A brief review of abstract members\u003cbr\u003e 20.2 Type Member\u003cbr\u003e 20.3 Abstract val\u003cbr\u003e 20.4 Abstract var\u003cbr\u003e 20.5 Abstract val initialization\u003cbr\u003e 20.6 Abstract Types\u003cbr\u003e 20.7 Path-dependent types\u003cbr\u003e 20.8 Subdivided Type\u003cbr\u003e 20.9 Enumerations\u003cbr\u003e 20.10 Case Study: Currency Conversion\u003cbr\u003e 20.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 21.\u003cbr\u003e Implicit conversions and implicit parameters\u003cbr\u003e 21.1 Implicit Conversion\u003cbr\u003e 21.2 Rules of Implication\u003cbr\u003e 21.3 Implicit conversion to expected type\u003cbr\u003e 21.4 Converting the Call Target Object\u003cbr\u003e 21.5 Implicit Parameters\u003cbr\u003e 21.6 Context Bounds\u003cbr\u003e 21.7 When using multiple transformations\u003cbr\u003e 21.8 Implicit Debugging\u003cbr\u003e 21.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 22.\u003cbr\u003e List implementation\u003cbr\u003e 22.1 List Class Overview\u003cbr\u003e 22.2 ListBuffer Class\u003cbr\u003e 22.3 Actual List Class\u003cbr\u003e 22.4 Functional when viewed from the outside\u003cbr\u003e 22.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 23.\u003cbr\u003e Reviewing the for expression\u003cbr\u003e 23.1 for expressions\u003cbr\u003e 23.2 n Queen's Problem\u003cbr\u003e 23.3 Querying with the for formula\u003cbr\u003e 23.4 for expression conversion\u003cbr\u003e 23.5 Reverse application\u003cbr\u003e 23.6 for generalization\u003cbr\u003e 23.7 Conclusion \u003cbr\u003eA Closer Look at Chapter 24 Collection 577\u003cbr\u003e 24.1 Mutable and Immutable Collections\u003cbr\u003e 24.2 Collection Consistency\u003cbr\u003e 24.3 Iterable Trait\u003cbr\u003e 24.4 Sequence Traits: Seq, IndexedSeq, LinearSeq\u003cbr\u003e 24.5 set\u003cbr\u003e 24.6 map\u003cbr\u003e 24.7 Immutable concrete collection classes\u003cbr\u003e 24.8 Mutable concrete collection classes\u003cbr\u003e 24.9 array\u003cbr\u003e 24.10 String\u003cbr\u003e 24.11 Performance Characteristics\u003cbr\u003e 24.12 Identity\u003cbr\u003e 24.13 views\u003cbr\u003e 24.14 Iterator\u003cbr\u003e 24.15 Creating Your First Collection\u003cbr\u003e 24.16 Converting Java and Scala Collections\u003cbr\u003e 24.17 Conclusion\u003cbr\u003e Chapter 25: Scala Collection Architecture 647\u003cbr\u003e 25.1 Bundling Common Operations\u003cbr\u003e 25.2 Adding a New Collection\u003cbr\u003e 25.3 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 26.\u003cbr\u003e extractor\u003cbr\u003e 26.1 Example: Extracting Email Addresses\u003cbr\u003e 26.2 Extractor\u003cbr\u003e 26.3 Patterns with no or only one variable\u003cbr\u003e 26.4 Variable argument extractor\u003cbr\u003e 26.5 Extractors and Sequence Patterns\u003cbr\u003e 26.6 Extractor and Case Classes\u003cbr\u003e 26.7 Regular Expressions\u003cbr\u003e 26.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 27.\u003cbr\u003e Annotation\u003cbr\u003e 27.1 Why are annotations needed?\u003cbr\u003e 27.2 Annotation Grammar\u003cbr\u003e 27.3 Standard Annotations \u003cbr\u003e27.4 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 28. Working with XML\u003cbr\u003e 28.1 Semi-structured data\u003cbr\u003e 28.2 XML Overview\u003cbr\u003e 28.3 XML Literals\u003cbr\u003e 28.4 Serialization\u003cbr\u003e 28.5 XML Parsing\u003cbr\u003e 28.6 Deserialization\u003cbr\u003e 28.7 Saving and Loading\u003cbr\u003e 28.8 Pattern Matching for XML\u003cbr\u003e 28.9 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 29.\u003cbr\u003e Modular programming using objects\u003cbr\u003e Problem 29.1\u003cbr\u003e 29.2 Recipe Application\u003cbr\u003e 29.3 Abstraction\u003cbr\u003e 29.4 Separating modules into traits\u003cbr\u003e 29.5 Runtime Linking\u003cbr\u003e 29.6 Tracking Module Instances\u003cbr\u003e 29.7 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 30.\u003cbr\u003e identity of objects\u003cbr\u003e 30.1 Identity in Scala\u003cbr\u003e 30.2 Writing an identity comparison method\u003cbr\u003e 30.3 Defining identity of parameterized types\u003cbr\u003e 30.4 Equals and HashCode Recipes\u003cbr\u003e 30.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 31.\u003cbr\u003e Combining Scala and Java\u003cbr\u003e 31.1 Using Scala in Java\u003cbr\u003e 31.2 Annotations\u003cbr\u003e 31.3 Wildcard Types\u003cbr\u003e 31.4 Compiling Scala and Java Together\u003cbr\u003e 31.5 Java 8 Integration\u003cbr\u003e 31.6 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 32.\u003cbr\u003e Future and Simultaneity\u003cbr\u003e 32.1 Trouble in Paradise\u003cbr\u003e 32.2 Asynchronous Execution and Try\u003cbr\u003e 32.3 Using Future\u003cbr\u003e 32.4 Future Test\u003cbr\u003e 32.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 33.\u003cbr\u003e Combinator parsing\u003cbr\u003e 33.1 Example: Arithmetic Expressions \u003cbr\u003e33.2 Running the parser\u003cbr\u003e 33.3 Basic Regular Expression Parser\u003cbr\u003e 33.4 Another example: JSON\u003cbr\u003e 33.5 Parser results\u003cbr\u003e 33.6 Combinator Parser Implementation\u003cbr\u003e 33.7 String Literals and Regular Expressions\u003cbr\u003e 33.8 Lexical Analysis and Parsing\u003cbr\u003e 33.9 Error Report\u003cbr\u003e 33.10 Backtracking and LL(1)\u003cbr\u003e 33.11 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 34. GUI Programming\u003cbr\u003e 34.1 First Swing Application\u003cbr\u003e 34.2 Panels and Layouts\u003cbr\u003e 34.3 Event Handling\u003cbr\u003e 34.4 Example: Celsius\/Fahrenheit Converter\u003cbr\u003e 34.5 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Chapter 35. SCells Spreadsheet\u003cbr\u003e 35.1 Screen Framework\u003cbr\u003e 35.2 Separating data entry and screen display\u003cbr\u003e 35.3 food\u003cbr\u003e Parsing of the 35.4 type\u003cbr\u003e 35.5 calculation\u003cbr\u003e 35.6 Operation Library\u003cbr\u003e 35.7 Change Propagation\u003cbr\u003e 35.8 Conclusion\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e Appendix A.\u003cbr\u003e Using Scala scripts on Unix and Windows\u003cbr\u003e Appendix B.\u003cbr\u003e Glossary of Terms\u003cbr\u003e Appendix C.\u003cbr\u003e References\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003e★ Recommended Article ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e When I started programming in 2004 and chose Scala, a then-little-known language, I had no idea what a voyage of exploration and discovery I was embarking on.\u003cbr\u003e\u003cbr\u003e \u003cbr\u003eWhen I first started experimenting with Scala, it felt a lot like any other language I'd used before, but it was a process of trial and error, discovery through experimentation, and enlightenment after misunderstanding.\u003cbr\u003e At the time, there was little documentation available to learn Scala, no tutorials, no blogs, and no Scala users experienced enough to teach me.\u003cbr\u003e Of course, there was no book like 『Programming in Scala』.\u003cbr\u003e There were languages ​​that offered amazing new features, but no one really knew how to use them properly.\u003cbr\u003e That situation was both inspiring and disconcerting!\u003cbr\u003e\u003cbr\u003e As a Java developer, I had an idea of ​​the programming style, but the experience of coding in Scala every day felt different.\u003cbr\u003e I remember my early adventures learning how to use Scala and working on medium-sized projects with others. \u003cbr\u003eThere were times when I decided to refactor (and I had to do this quite often as I continued to discover and learn new features and patterns), and there were times when I had to compile multiple times.\u003cbr\u003e\u003cbr\u003e The compiler spits out various errors each time, along with source code line numbers.\u003cbr\u003e Each time, I would look at the code, figure out what was wrong, and then modify the code to fix the error (of course, often the error moved to a different location as I modified the code).\u003cbr\u003e But at each of these steps, the compiler led me right to the root of the problem.\u003cbr\u003e Sometimes I've spent days trying to modify the code without ever successfully compiling it. \u003cbr\u003eBut I was able to get my heavily refactored software up and running for the first time, reducing the number of compile errors from a few hundred to a dozen, then reducing those errors to one, and finally eliminating them altogether (meaning it compiled successfully).\u003cbr\u003e\u003cbr\u003e And contrary to my expectations, the compiled code ran fine from the start.\u003cbr\u003e As a young programmer who had only experienced Java, Perl, Pascal, Basic, PHP, and JavaScript, I can't express in words how impressive this experience was.\u003cbr\u003e In his keynote at the Scala World conference I organized in 2015, Runar Bjarnason argued that “constraints give freedom, and freedom imposes constraints.”\u003cbr\u003e This truth is most evident when compiling to Scala. \u003cbr\u003eThe main purpose of scalac enforcing various constraints is to prevent programmers from making errors that are expected to occur at runtime (and these are the worst of all errors), which frees up all programmers.\u003cbr\u003e This allows programmers to experiment, explore, and change the software with confidence, even without a comprehensive test suite.\u003cbr\u003e\u003cbr\u003e Years have passed since then, and to this day I continue to learn Scala, discovering new possibilities, subtle semantic differences, and interesting interactions between different features.\u003cbr\u003e I don't know of any other programming language that offers the depth to keep users engaged for so many years.\u003cbr\u003e\u003cbr\u003e Scala is about to undergo a period of tremendous change. \u003cbr\u003eThe next major version, Scala 3, will contain as many changes as when I moved from Java to Scala 2 15 years ago.\u003cbr\u003e While the day-to-day programming experience with Scala will remain largely the same, Scala 3 brings a repertoire of new features that span nearly the entire Scala language.\u003cbr\u003e As of this writing, Scala 3 is still a few years away from widespread adoption, and Scala 2 will likely remain the de facto standard for the foreseeable future.\u003cbr\u003e\u003cbr\u003e This book covers extensively the latest release of Scala 2, Scala 2.13.\u003cbr\u003e We also introduce the collections library, which has been redesigned and introduced into the standard library to further simplify its structure while incorporating lessons learned after the major redesign introduced in Scala 2.8.\u003cbr\u003e The new collections library can be compiled in both Scala 2 and 3. \u003cbr\u003eSo this collection library will provide the foundation for the code that will be used for the next 10 years.\u003cbr\u003e So, before you get excited about the new Scala, it's a great time to pick up this book and start learning!\u003cbr\u003e\u003cbr\u003e Jon Pretty\u003cbr\u003e Krakow, Poland, September 12, 2019\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Target audience for this book ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e The primary target audience is programmers who want to learn how to write programs in Scala.\u003cbr\u003e If you want to tackle your next project in Scala, this book is for you.\u003cbr\u003e Programmers who want to broaden their horizons by learning new concepts will also find this book enjoyable.\u003cbr\u003e For example, a Java programmer can learn various functional programming concepts and more advanced object-oriented ideas by reading this book.\u003cbr\u003e I believe that after learning Scala and its ideas, you will definitely become a better programmer.\u003cbr\u003e \u003cbr\u003eWe assume that the reader has general programming knowledge.\u003cbr\u003e Although Scala itself is a good language to start learning programming, this book does not teach you how to program.\u003cbr\u003e However, no prior knowledge of a programming language is required.\u003cbr\u003e Although most programmers use Scala on the Java platform, we do not assume readers have any knowledge of Java.\u003cbr\u003e However, since we expect many readers to be familiar with Java, we will occasionally compare Java and Scala to help readers familiar with Java development understand.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Structure of this book ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Chapter 1, 'Extensible Language', explains the design of Scala and its rationale, and provides background history.\u003cbr\u003e Chapter 2, \"First Steps in Scala,\" shows how to handle basic programming tasks in Scala.\u003cbr\u003e I won't go into detail about why each one works. \u003cbr\u003eThe goal of Chapter 2 is to get the reader typing and running Scala code.\u003cbr\u003e Chapter 3, \"Scala: Second Steps,\" demonstrates more basic programming tasks to help you get up to speed with Scala more quickly.\u003cbr\u003e After completing Chapter 3, you will be able to use Scala for simple scripting tasks.\u003cbr\u003e Chapter 4, \"Classes and Objects,\" details Scala's basic object-oriented building blocks and shows how to compile and run Scala applications.\u003cbr\u003e Chapter 5, 'Basic Types and Operations', explains Scala's basic types and their literals.\u003cbr\u003e And it explains the operations, precedence, and associativity rules that can be used for each type.\u003cbr\u003e Finally, let's talk about the rich wrapper.\u003cbr\u003e Chapter 6, 'Functional Objects', delves deeper into the object-oriented aspects of Scala.\u003cbr\u003e Let's use an immutable functional rational number as an example. \u003cbr\u003eChapter 7, 'Built-in Control Statements' shows how to utilize the control structures provided by Scala: if, while, for, try, and match.\u003cbr\u003e Chapter 8, \"Functions and Closures,\" details functions, the basic building blocks of functional languages.\u003cbr\u003e Chapter 9, \"Control Flow Abstractions,\" explains how readers can create their own control abstractions to complement Scala's basic control structures.\u003cbr\u003e Chapter 10, \"Inheritance and Composition,\" discusses how Scala supports object-oriented programming.\u003cbr\u003e The topics covered are not as fundamental as those in Chapter 4, but they are more frequently encountered in practice.\u003cbr\u003e Chapter 11, \"Scala's Hierarchy,\" explains Scala's inheritance hierarchy and the common methods and floor types available in all hierarchies.\u003cbr\u003e Chapter 12, 'Traits', covers the mechanism of combining mixins in Scala. \u003cbr\u003eChapter 12 shows how traits work, describes common use cases, and shows how traits enhance traditional multiple inheritance.\u003cbr\u003e Chapter 13, \"Packages and Imports,\" discusses problems that arise in large-scale programming.\u003cbr\u003e Describes top-level packages, import commands, and access control modifiers such as protected and private.\u003cbr\u003e Chapter 14, \"Assertions and Testing,\" covers Scala's assertion mechanism and briefly explores several testing tools available in Scala.\u003cbr\u003e In particular, we will focus on ScalaTest.\u003cbr\u003e Chapter 15, \"Case Classes and Pattern Matching,\" introduces a pair of constructs that support writing common, non-encapsulated data structures.\u003cbr\u003e In particular, case classes and pattern matches are useful when creating recursive data such as tree structures. \u003cbr\u003eChapter 16, 'Lists', details lists, the most commonly used data structure in Scala programs.\u003cbr\u003e Chapter 17, 'Collections', shows how to use basic Scala collections such as lists, arrays, tuples, sets, and maps.\u003cbr\u003e Chapter 18, 'Mutable Objects', explains mutable objects and learns how to express them in Scala.\u003cbr\u003e The latter part of Chapter 18 covers discrete event simulation, which makes practical use of mutable objects.\u003cbr\u003e Chapter 19, 'Type Parameterization', explains some of the information hiding techniques introduced in Chapter 13 with specific examples.\u003cbr\u003e An example is to create a fully functional queue class.\u003cbr\u003e Chapter 19 explains the variance of type parameters and discusses the relationship between variance and information hiding.\u003cbr\u003e Chapter 20, \"Abstract Members,\" describes all the abstract members supported by Scala. \u003cbr\u003eNot only methods, but also fields and types can be defined as abstract members.\u003cbr\u003e Chapter 21, \"Implicit Conversions and Implicit Parameters,\" introduces two elements that help the compiler fill in the necessary information for programmers by allowing them to omit potentially tedious parts of their source code.\u003cbr\u003e Chapter 22, 'List Implementation' explains the implementation of the List class.\u003cbr\u003e It is important to understand how Scala lists work.\u003cbr\u003e Furthermore, this implementation also demonstrates how to leverage some of Scala's features.\u003cbr\u003e Chapter 23, \"Revisiting the for Expression,\" shows how the for expression can be converted into commands that call map, flatMap, filter, foreach, and so on.\u003cbr\u003e Chapter 24, \"A Closer Look at Collections,\" provides a detailed explanation of the Scala collections library. \u003cbr\u003eChapter 25, \"The Architecture of Scala Collections,\" shows how we built the collections library and explains how you can implement your own collections.\u003cbr\u003e Chapter 26, \"Extractor,\" shows how to pattern match against arbitrary classes, not just case classes.\u003cbr\u003e Chapter 27, 'Annotations', shows how to use language extensions through annotations.\u003cbr\u003e We'll cover standard annotations and how to create your own.\u003cbr\u003e Chapter 28, \"Working with XML,\" explains how to work with XML in Scala. It demonstrates several idioms for generating XML, parsing it, and processing the parsed XML.\u003cbr\u003e Chapter 29, 'Modular Programming with Objects', shows how to use Scala's objects as a module system.\u003cbr\u003e Chapter 30, 'Object Identity', explains what to consider when writing an equals method. \u003cbr\u003eThere are a few pitfalls to avoid.\u003cbr\u003e Chapter 31, 'Combining Scala and Java' discusses problems that arise when using Scala and Java together in a single project and proposes solutions.\u003cbr\u003e Chapter 32, 'Futures and Concurrency', shows how to use Futures in Scala.\u003cbr\u003e While you can leverage Java's concurrency primitives and libraries in your Scala programs, using futures helps you avoid deadlocks and race conditions that often plague traditional \"threads and locks\" approaches.\u003cbr\u003e Chapter 33, \"Combinator Parsing,\" shows how to build a parser using Scala's parser combinator library.\u003cbr\u003e Chapter 34, 'GUI Programming', shows the process of simple Swing GUI programming using the Scala library. \u003cbr\u003eChapter 35, 'SCells Spreadsheet', brings together what you've learned so far to create a complete spreadsheet application in Scala.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Author's Note ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Because this book is a tutorial, it is recommended that you read it sequentially from beginning to end.\u003cbr\u003e We have made every effort to introduce only one topic at a time, and to explain new topics based on what has been previously described.\u003cbr\u003e So, if you were to flip to the back of a book to get a quick overview of something, you might find it difficult to understand because the topic is probably being explained using concepts you're not familiar with.\u003cbr\u003e If you read each chapter in order, you will be able to easily build your Scala skills one step at a time.\u003cbr\u003e If you come across a term you don't know, check out the 'Lookup' and 'Glossary' sections.\u003cbr\u003e Some readers may just skim through the book.\u003cbr\u003e That's okay though. \u003cbr\u003eThe 'Lookup' and 'Glossary' will help you re-examine any overlooked parts.\u003cbr\u003e This book can be used as a language reference even after reading it once.\u003cbr\u003e Although there is a formal specification for the Scala language, the language specification sacrifices readability for correctness.\u003cbr\u003e Although this book doesn't cover every detail of Scala, it covers a broad range of topics and will serve as a handy language reference as you become more proficient in Scala programming.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e \u003cb\u003e★ Translator's Note ★\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Even in 2014, when I translated the second edition of 『Programming in Scala』, interest in Scala was not that great in Korea. \u003cbr\u003eHowever, around the same time that the second edition was released, Apache Spark gained popularity and the number of technology startups increased, leading to a rapid increase in interest in languages ​​like Python and Scala that are easier to use than languages ​​like Java.\u003cbr\u003e As a result, the number of developers entering the Scala community has increased, and Scala has received more attention in various study groups and seminars than before.\u003cbr\u003e As Scala versions increase, some features used in older versions are removed, some terms or usage have changed, and some new features are introduced.\u003cbr\u003e Just as everyday languages ​​like Korean and English evolve, the fact that programming languages ​​naturally adopt such changes based on the usage environment or user needs is evidence of a healthy and vibrant language and its community. \u003cbr\u003eI am especially pleased to be able to translate and publish the 4th edition, which has been redesigned to be simpler and has supplemented the contents of the collection library ahead of the release of Scala 3 (Dotty).\u003cbr\u003e As I mentioned in the translator's note for the third edition, using languages ​​of different paradigms can make you a better programmer, whether you're doing procedural or object-oriented programming.\u003cbr\u003e Through this book, I hope that readers will learn Scala well, apply what they have learned in Scala and functional programming, and furthermore, become programmers who can create readable and maintainable code by utilizing the right concepts at the right time, regardless of the programming language they use.\u003cbr\u003e\u003cbr\u003e Oh Hyeon-seok\u003cbr\u003e December 2020 in Brisbane, Australia\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e GOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate of issue:\u003c\/strong\u003e January 15, 2021\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePage count, weight, size:\u003c\/strong\u003e 924 pages | 1,760g | 188*235*44mm\u003c\/div\u003e\n\n \u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791161754871\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10:\u003c\/strong\u003e 1161754873 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893355905066,"sku":"139425","price":68.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/b18f0b6123bf651ba47a38ebcd3c6c25.jpg?v=1765398168","url":"https:\/\/librairie.coreenne.fr\/en\/products\/139425","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}