Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
About This E-Book
Title Page
Copyright Page
Dedication Page
Contents
Foreword
Preface
Acknowledgments
About the Author
Chapter 1. Introduction
1.1 Motivation
1.2 Design Principles
1.2.1 Everything Is an Object
1.2.2 Program to an Interface, not an Implementation
1.2.3 Types in the Service of the Programmer
1.3 Constraints
1.4 Overview
1.5 Book Structure
1.6 Related Work and Influences
Chapter 2. Objects, Interfaces, Classes and Mixins
2.1 Accessors
2.2 Instance Variables
2.3 Class Variables
2.4 Finals
2.5 Identity and Equality
2.6 Class and Superclass
2.7 Abstract Methods and Classes
2.8 Interfaces
2.9 Life of an Object
2.9.1 Redirecting Constructors
2.9.2 Factories
2.10 noSuchMethod()
2.11 Constant Objects and Fields
2.12 Class Methods
2.13 Instances, Their Classes and Metaclasses
2.14 Object and Its Methods
2.15 Mixins
2.15.1 Example: The Expression Problem
2.16 Related Work
2.17 Summary
Chapter 3. Libraries
3.1 The Top Level
3.2 Scripts
3.3 Privacy
3.4 Imports
3.5 Breaking Libraries into Parts
3.6 Exports
3.7 Diamond Imports
3.8 Deferred Loading
3.9 Related Work
3.10 Summary
Chapter 4. Functions
4.1 Parameters
4.1.1 Positional Parameters
4.1.2 Named Parameters
4.2 Function Bodies
4.3 Function Declarations
4.4 Closures
4.5 Invoking Methods and Functions
4.5.1 Cascades
4.5.2 Assignment
4.5.3 Using Operators
4.6 The Function Class
4.6.1 Emulating Functions
4.7 Functions as Objects
4.8 Generator Functions
4.8.1 Iterators and Iterables
4.8.2 Synchronous Generators
4.9 Related Work
4.10 Summary
Chapter 5. Types
5.1 Optional Typing
5.2 A Tour of Types
5.3 Interface Types
5.4 Types in Action: The Expression Problem, Typed
5.5 Generics
5.5.1 The Expression Problem with Generics
5.6 Function Types
5.6.1 Optional Positional Parameters
5.6.2 Named Parameters
5.6.3 Call() Revisited
5.7 Type Reification
5.7.1 Type Tests
5.7.2 Type Casts
5.7.3 Checked Mode
5.7.4 Reified Generics
5.7.5 Reification and Optional Typing
5.7.6 Types and Proxies
5.8 Malformed Types
5.9 Unsoundness
5.10 Related Work
5.11 Summary
Chapter 6. Expressions and Statements
6.1 Expressions
6.1.1 Literals
6.1.2 Identifiers
6.1.3 this
6.1.4 Constants
6.1.5 Creating Objects
6.1.6 Assignment
6.1.7 Extracting Properties
6.1.8 Method Access
6.1.9 Using Operators
6.1.10 Throw
6.1.11 Conditionals
6.2 Statements
6.2.1 Blocks
6.2.2 If
6.2.3 Loops
6.2.4 Try-Catch
6.2.5 Rethrow
6.2.6 Switch
6.2.7 Assert
6.2.8 Return
6.2.9 Yield and Yield-Each
6.2.10 Labels
6.2.11 Break and Continue
6.3 Summary
Chapter 7. Reflection
7.1 Introspection
7.1.1 Implications for Speed and Size
7.1.2 Example: Proxies
7.1.3 Example: Serialization
7.1.4 Example: Parser Combinators
7.2 Why Mirrors
7.3 Metadata
7.4 Reflection via Code Generation
7.5 Beyond Introspection
7.6 Related Work
7.7 Summary
Chapter 8. Asynchrony and Isolates
8.1 Asynchrony
8.2 Futures
8.2.1 Consuming Futures
8.2.2 Producing Futures
8.2.3 Scheduling
8.3 Streams
8.4 Isolates
8.4.1 Ports
8.4.2 Spawning
8.4.3 Security
8.5 Example: Client-Server Communication
8.5.1 Promise: A Brighter Future
8.5.2 Isolates as Distributed Objects
8.6 Asynchronous Functions
8.6.1 Await
8.6.2 Asynchronous Generators
8.6.3 Await-For loops
8.7 Related Work
8.8 Summary
Chapter 9. Conclusion
9.1 Optional Typing
9.2 Object Orientation
9.3 Reflection
9.4 Tooling
9.5 Summary
Bibliography
Index
Code Snippets
← Prev
Back
Next →
← Prev
Back
Next →