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

Iterating types

Much of what we talked about and demonstrated in the last section can also be applied to types themselves. The one major benefit of iterating over types is that they are not constrained by the same limitation as instance variables are. In other words, you don't need to be in the context of a method in order to iterate over types. Because of this, the possibilities are almost endless!

You could iterate types within the context of another class to generate code, iterate on the top level to generate additional types, or even within a method to build out a sort of pipeline using annotations to define the order.

In each of these contexts, any data that is available at compile time could be used to alter how the code gets generated, such as environmental variables, constants, annotations, or data extracted from the type itself. All in all, it is a very powerful feature that has a lot of useful applications. But before we can start to explore some of those use cases...