Online Library TheLib.net » The D programming language
cover of the book The D programming language

Ebook: The D programming language

00
27.01.2024
0
0
Here is an accessible, algorithmically oriented guide to some of the most interesting techniques of complexity theory. The book shows that simple algorithms are at the heart of complexity theory. The book is organized by technique rather than by topic. Each chapter focuses on one technique: what it is, and what results and applications it yields Foreword by Walter Bright xv Foreword by Scott Meyers xix Preface xxiii Chapter 1: "D"iving In 1 1.1 Numbers and Expressions 3 1.2 Statements 5 1.3 Function Basics 6 1.4 Arrays and Associative Arrays 7 1.5 Basic Data Structures 14 1.6 Interfaces and Classes 20 1.7 Values versus References 25 1.8 Summary 27 Chapter 2: Basic Types. Expressions 29 2.1 Symbols 30 2.2 Literals 32 2.3 Operators 42 2.4 Summary and Quick Reference 61 Chapter 3: Statements 65 3.1 The Expression Statement 65 3.2 The Compound Statement 66 3.3 The if Statement 67 3.4 The static if Statement 68 3.5 The switch Statement 71 3.6 The final switch Statement 72 3.7 Looping Statements 73 3.8 The goto Statement 78 3.9 The with Statement 80 3.10 The return Statement 81 3.11 The throw and try Statements 81 3.12 The mixin Statement 82 3.13 The scope Statement 84 3.14 The synchronized Statement 88 3.15 The asm Statement 89 3.16 Summary and Quick Reference 89 Chapter 4: Arrays, Associative Arrays, and Strings 93 4.1 Dynamic Arrays 93 4.2 Fixed-Size Arrays 107 4.3 Multidimensional Arrays 111 4.4 Associative Arrays 114 4.5 Strings 118 4.6 Arrays' Maverick Cousin: The Pointer 124 4.7 Summary and Quick Reference 126 Chapter 5: Data and Functions. Functional Style 131 5.1 Writing and unittesting a Simple Function 131 5.2 Passing Conventions and Storage Classes 134 5.3 Type Parameters 138 5.4 Signature Constraints 140 5.5 Overloading 142 5.6 Higher-Order Functions. Function Literals 148 5.7 Nested Functions 150 5.8 Closures 152 5.9 Beyond Arrays. Ranges. Pseudo Members 154 5.10 Variadic Functions 159 5.11 Function Attributes 165 5.12 Compile-Time Evaluation 169 Chapter 6: Classes. Object-Oriented Style 175 6.1 Classes 175 6.2 Object Names Are References 177 6.3 It's an Object's Life 181 6.4 Methods and Inheritance 190 6.5 Class-Level Encapsulation with static Members 196 6.6 Curbing Extensibility with final Methods 197 6.7 Encapsulation 199 6.8 One Root to Rule Them All 203 6.9 Interfaces 212 6.10 Abstract Classes 218 6.11 Nested Classes 222 6.12 Multiple Inheritance 226 6.13 Multiple Subtyping 230 6.14 Parameterized Classes and Interfaces 233 6.15 Summary 237 Chapter 7: Other User-Defined Types 239 7.1 structs 240 7.2 unions 270 7.3 Enumerated Values 272 7.4 alias 276 7.5 Parameterized Scopes with template 278 7.6 Injecting Code with mixin templates 282 7.7 Summary and Reference 285 Chapter 8: Type Qualifiers 287 8.1 The immutable Qualifier 288 8.2 Composing with immutable 291 8.3 immutable Parameters and Methods 292 8.4 immutable Constructors 293 8.5 Conversions involving immutable 295 8.6 The const Qualifier 297 8.7 Interaction between const and immutable 298 8.8 Propagating a Qualifier from Parameter to Result 299 8.9 Summary 300 Chapter 9: Error Handling 301 9.1 throwing and catching 301 9.2 Types 302 9.3 finally clauses 306 9.4 nothrow Functions and the Special Nature of Throwable 307 9.5 Collateral Exceptions 307 9.6 Stack Unwinding and Exception-Safe Code 309 9.7 Uncaught Exceptions 312 Chapter 10: Contract Programming 313 10.1 Contracts 314 10.2 Assertions 316 10.3 Preconditions 317 10.4 Postconditions 319 10.5 Invariants 321 10.6 Skipping Contract Checks. Release Builds 324 10.7 Contracts: Not for Scrubbing Input 327 10.8 Contracts and Inheritance 329 10.9 Contracts in Interfaces 334 Chapter 11: Scaling Up 337 11.1 Packages and Modules 337 11.2 Safety 353 11.3 Module Constructors and Destructors 356 11.4 Documentation Comments 358 11.5 Interfacing with C and C++ 359 11.6 deprecated 359 11.7 version Declarations 360 11.8 debug Declarations 361 11.9 D's Standard Library 361 Chapter 12: Operator Overloading 365 12.1 Overloading Operators 366 12.2 Overloading Unary Operators 367 12.3 Overloading Binary Operators 371 12.4 Overloading Comparison Operators 375 12.5 Overloading Assignment Operators 376 12.6 Overloading Indexing Operators 377 12.7 Overloading Slicing Operators 379 12.8 The $ Operator 379 12.9 Overloading foreach 380 12.10 Defining Overloaded Operators in Classes 383 12.11 And Now for Something Completely Different: opDispatch 384 12.12 Summary and Quick Reference 388 Chapter 13: Concurrency 391 13.1 Concurrentgate 392 13.2 A Brief History of Data Sharing 394 13.3 Look, Ma, No (Default) Sharing 397 13.4 Starting a Thread 399 13.5 Exchanging Messages between Threads 401 13.6 Pattern Matching with receive 403 13.7 File Copying--with a Twist 406 13.8 Thread Termination 407 13.9 Out-of-Band Communication 409 13.10 Mailbox Crowding 410 13.11 The shared Type Qualifier 411 13.12 Operations with shared Data and Their Effects 413 13.13 Lock-Based Synchronization with synchronized classes 414 13.14 Field Typing in synchronized classes 419 13.15 Deadlocks and the synchronized Statement 424 13.16 Lock-Free Coding with shared classes 426 13.17 Summary 431 Bibliography 433 Index 439
Download the book The D programming language for free or read online
Read Download
Continue reading on any device:
QR code
Last viewed books
Related books
Comments (0)
reload, if the code cannot be seen