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

Controlling the execution flow with conditionals

Crystal, like most imperative languages, has a top-to-bottom line-by-line flow of execution. After the current line is executed, the line below that will be the next one. But you are empowered to control and redirect this flow of execution based on any conditional expression you can think of. The first kind of flow control we will cover is precisely that, reacting to conditionals.

if and unless

An if statement can be used to check a conditional; if it's truthy (that is, not nil nor false), then the statement inside it is executed. You can use else to add an action in case the conditional isn't true. See this, for example:

secret_number = rand(1..5) # A random integer between 1 and 5
print "Please input your guess: "
guess = read_line.to_i
if guess == secret_number
  puts "You guessed correctly!"
else
  puts "Sorry, the number was #{secret_number}."
end

The conditional...