Le

Le basi in Crystal

1 esercizio

Informazioni su Le basi

Crystal è un linguaggio di programmazione compilato e orientato agli oggetti. Questi sono alcuni degli obiettivi del linguaggio:

  • Sintassi ispirata a Ruby.

  • Controllo dei tipi a compile time, ma senza dover specificare il tipo delle variabili o degli argomenti dei metodi.

  • Poter chiamare codice C scrivendo in Crystal dei binding verso di esso.

  • Disporre di valutazione e generazione di codice a compile time, per evitare codice boilerplate.

  • Compilare in codice nativo efficiente.

Il lavoro su Crystal è iniziato nel 2011 con l'obiettivo di creare un linguaggio con l'eleganza e la produttività di Ruby, ma con le prestazioni e la sicurezza dei tipi di un linguaggio compilato. Il compilatore del linguaggio è stato inizialmente scritto in Ruby, ma nel 2013 è stato riscritto in Crystal. Ary Borenszweig, Juan Wajnerman e Brian Cardiff hanno sviluppato e progettato il linguaggio.

Per iniziare

Variabili

Per dichiarare una variabile, usa l'operatore di assegnazione =. In Crystal, le variabili dovrebbero usare il formato snake_case.

number = 1
puts number # => 1

number = 2
puts number # => 2

Costanti

Le costanti si dichiarano con lo stesso operatore di assegnazione =, ma usano tutte lettere maiuscole, note come SCREAMING_SNAKE_CASE.

NUMBER = 1
puts NUMBER # => 1

Assegnare un valore a una costante già definita produce un errore a compile time.

NUMBER = 1

NUMBER = 2
# Error: already initialized constant NUMBER

Tipi

Crystal è un linguaggio compilato: ogni variabile o argomento di un metodo riceve un tipo a compile time. Il compilatore è in grado di inferire il tipo di una variabile o di un argomento di un metodo. Tuttavia, in alcuni casi è necessario specificare il tipo. I casi che richiedono di specificare un tipo verranno spiegati nei concetti successivi.

Metodi

I metodi sono un modo per raggruppare un insieme di istruzioni che possono essere riutilizzate. In Crystal, i metodi sono spesso definiti all'interno di una classe, un modulo o una struct. Tuttavia, i metodi possono anche essere definiti al di fuori di una classe, un modulo o una struttura. I metodi si dichiarano con la parola chiave def, seguita dal nome del metodo. In Crystal, i metodi dovrebbero essere scritti in snake_case. Puoi omettere le parentesi quando un metodo non ha argomenti. Per dichiarare la fine di un metodo, devi usare la parola chiave end.

def hello
  puts "Hello World!"
end

Usare un metodo che non esiste per il tipo di una variabile o di un argomento di un metodo produce un errore a compile time.

number = 1
number + "1"
# Error: no overload matches 'Int32#+' with type String

Argomenti

I metodi possono avere degli argomenti. Gli argomenti sono i dati che vengono passati a un metodo. Per poter passare degli argomenti a un metodo, devi specificare il nome dell'argomento. In Crystal, gli argomenti dovrebbero essere scritti in snake_case. Un metodo può avere più argomenti, ma una virgola deve separare gli argomenti.

def hello(name)
  puts "Hello #{name}!"
end

I metodi possono anche avere più argomenti. In questo caso, gli argomenti devono essere separati da una virgola.

def hello(name, language)
  puts "Hello #{name}! You are learning #{language}."
end

Chiamare i metodi

Quando chiami un metodo che appartiene a una classe, un modulo o una struct, devi usare l'operatore punto (.). Il formato dovrebbe essere: <ClassName>.<method_name>. Quando un metodo non appartiene a una classe, un modulo o una struct, puoi semplicemente chiamarlo scrivendone il nome. I metodi restituiscono sempre implicitamente il valore dell'ultima espressione.

Quando un metodo ha degli argomenti, puoi usare le parentesi per specificarli sia nella chiamata sia nella definizione del metodo, come qui: <method_name>(<argument_1>, <argument_2>, ...). Quando un metodo non ha argomenti, le parentesi dovrebbero essere omesse.

def hello(name)
  "Hello #{name}!"
end

hello("Crystal")
# => Hello Crystal!

Quando chiami un metodo con più argomenti, una virgola dovrebbe separare gli argomenti. Gli argomenti devono essere forniti nello stesso ordine degli argomenti del metodo.

def hello_language(name, language)
  "Hello #{name}! You are learning #{language}."
end

hello_language("World", "Crystal")
# => Hello World! You are learning Crystal.

Chiamare un metodo con un numero sbagliato di argomenti produce un errore a compile time.

hello_language("Crystal")
# wrong number of arguments for 'hello_language' (given 1, expected 2)

Addizione, sottrazione e moltiplicazione

In Crystal, puoi usare l'operatore + per sommare due numeri. Puoi anche usare l'operatore - per sottrarre due numeri. E puoi usare l'operatore * per moltiplicare due numeri.

1 + 1
# => 2

2 - 1
# => 1

2 * 2
# => 4

Commenti

In Crystal, i commenti si scrivono con il carattere #, seguito da uno spazio e poi dal commento. I commenti servono a documentare il codice. Il compilatore non esegue i commenti.

# This is a comment
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Le basi