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

What are annotations?

Simply put, an annotation is a way to attach metadata to certain features in the code that can subsequently be accessed at compile time within a macro. Crystal comes bundled with some built-in annotations that you may have already worked with, such as @[JSON::Field] or the @[Link] annotation, which was covered in Chapter 7, C Interoperability. While both of these annotations are included by default, they do differ in regard to their behavior. For example, the JSON::Field annotation exists in Crystal's standard library and is implemented/used in a way that you could replicate in your own code with your own annotation. The Link annotation, on the other hand, has a special relationship with the Crystal compiler and some of its behavior cannot be reproduced in user code.

Custom annotations can be defined via the annotation keyword:

annotation MyAnnotation; end

That is all there is to it. The annotation could then be applied to various items, including...