Book Image

Crystal Programming

By : George Dietrich, Guilherme Bernal
Book Image

Crystal Programming

By: George Dietrich, Guilherme Bernal

Overview of this book

Crystal is a programming language with a concise and user-friendly syntax, along with a seamless system and a performant core, reaching C-like speed. This book will help you gain a deep understanding of the fundamental concepts of Crystal and show you how to apply them to create various types of applications. This book comes packed with step-by-step explanations of essential concepts and practical examples. You'll learn how to use Crystal’s features to create complex and organized projects relying on OOP and its most common design patterns. As you progress, you'll gain a solid understanding of both the basic and advanced features of Crystal. This will enable you to build any application, including command-line interface (CLI) programs and web applications using IOs, concurrency and C bindings, HTTP servers, and the JSON API. By the end of this programming book, you’ll be equipped with the skills you need to use Crystal programming for building and understanding any application you come across.
Table of Contents (26 chapters)
1
Part 1: Getting Started
5
Part 2: Learning by Doing – CLI
10
Part 3: Learn by Doing – Web Application
13
Part 4: Metaprogramming
18
Part 5: Supporting Tools

The concept of objects and classes

Objects have some amount of data inside themselves and govern the access and behaviors around that data. They are like actors, communicating with other objects by calling methods and exchanging data in a very defined interface. No object is allowed to interfere with the internal state of another object directly – methods define all interaction.

Classes are the blueprints that objects are created from. Every object is an instance of some class. The class defines the data layout, the available methods, the behaviors, and the internal implementation. The class of an object is often referred to as its type: every object has a type.

In Crystal, everything is an object – every value you interact with has a type (that is, it has a class) and has methods you can invoke. Numbers are objects, strings are objects – even nil is an object of the Nil class and has methods. You can query the class of an object by calling the .class method...