Ruby Cheat Sheet
Ultimo aggiornamento
Hello World ed esecuzione del codice
Ruby non richiede codice di contorno: basta una riga per eseguire qualcosa.
| Operazione | Sintassi |
|---|---|
| Stampare con ritorno a capo | puts "Hello, World!" |
| Stampare senza ritorno a capo | print "Hello" |
| Ispezionare un valore | p [1, 2, 3] |
| Interpolazione di stringhe | puts "Hi #{name}" |
| Commento | # this is a comment |
| Commento su più righe | =begin ... =end |
| Eseguire un file | ruby app.rb |
| Shell interattiva | irb |
Variabili e tipi
Ruby ha tipizzazione dinamica; tutto è un oggetto.
| Operazione | Sintassi |
|---|---|
| Variabile locale | age = 30 |
| Costante | PI = 3.14 |
| Variabile d'istanza | @name = "Ada" |
| Variabile globale | $count = 0 |
| Simbolo | :status |
| Nil / booleano | nil, true, false |
| Controllare il tipo | 42.class restituisce Integer |
| Convertire il tipo | "42".to_i, 42.to_s, "3.5".to_f |
Stringhe
Le stringhe sono oggetti mutabili con un ricco insieme di metodi.
| Operazione | Sintassi |
|---|---|
| Lunghezza | "hello".length |
| Maiuscole / minuscole | s.upcase, s.downcase |
| Rimuovere gli spazi | s.strip |
| Sostituire | s.gsub("a", "b") |
| Dividere in un array | "a,b,c".split(",") |
| Contiene una sottostringa | s.include?("ell") |
| Estrarre caratteri | s[0..2] |
| Concatenare | "foo" + "bar", s << "!" |
| Ripetere | "ab" * 3 |
| Formattare | format("%05d", 42) |
Array
Collezioni ordinate con indici interi.
| Operazione | Sintassi |
|---|---|
| Creare | nums = [1, 2, 3] |
| Accedere per indice | nums[0], nums[-1] |
| Aggiungere in coda | nums.push(4), nums << 4 |
| Rimuovere dalla fine | nums.pop |
| Lunghezza | nums.length |
| Map | nums.map { |n| n * 2 } |
| Filtrare | nums.select { |n| n.even? } |
| Ridurre | nums.reduce(0) { |sum, n| sum + n } |
| Ordinare | nums.sort |
| Unire in una stringa | nums.join(", ") |
Hash
Collezioni chiave-valore, spesso con simboli come chiavi.
| Operazione | Sintassi |
|---|---|
| Creare | user = { name: "Ada", age: 30 } |
| Accedere a un valore | user[:name] |
| Impostare un valore | user[:email] = "a@x.com" |
| Controllare una chiave | user.key?(:name) |
| Eliminare una chiave | user.delete(:age) |
| Chiavi / valori | user.keys, user.values |
| Iterare | user.each { |k, v| puts "#{k}: #{v}" } |
| Valore predefinito | Hash.new(0) |
| Unire | h1.merge(h2) |
Controllo del flusso
Condizioni e cicli; nota i modificatori in coda di Ruby.
| Operazione | Sintassi |
|---|---|
| If / elsif / else | if x > 0 ... elsif x < 0 ... else ... end |
| If in linea (modificatore) | puts "hi" if ready |
| Unless | unless done ... end |
| Ternario | x > 0 ? "pos" : "neg" |
| Case / when | case n; when 1 then ...; else ...; end |
| Ciclo while | while i < 10 ... end |
| Ciclo until | until done ... end |
| Times | 5.times { |i| puts i } |
| Iterare su un intervallo | (1..5).each { |i| puts i } |
| Break / next | break, next |
Metodi
L'ultima espressione viene restituita implicitamente.
| Operazione | Sintassi |
|---|---|
| Definire un metodo | def add(a, b) ... end |
| Return implicito | def square(x) x * x end |
| Argomento predefinito | def greet(name = "World") ... end |
| Argomenti con nome | def box(w:, h:) ... end |
| Splat (variadico) | def sum(*nums) ... end |
| Metodo che termina con ? | def valid? ... end |
| Metodo che termina con ! | def normalize! ... end |
| Chiamata senza parentesi | greet "Ada" |
Blocchi, proc e lambda
I blocchi sono porzioni di codice passate ai metodi; proc e lambda li memorizzano.
| Operazione | Sintassi |
|---|---|
| Blocco (graffe) | [1, 2].each { |n| puts n } |
| Blocco (do/end) | [1, 2].each do |n| puts n end |
| Cedere il controllo al blocco (yield) | def run; yield; end |
| Controllare se c'è un blocco | block_given? |
| Ricevere il blocco come parametro | def run(&blk); blk.call; end |
| Creare una proc | square = proc { |x| x * x } |
| Creare una lambda | square = ->(x) { x * x } |
| Chiamare una proc / lambda | square.call(3), square.(3) |
Classi e moduli
Le classi contengono stato e comportamento; i moduli aggiungono metodi condivisi.
| Operazione | Sintassi |
|---|---|
| Definire una classe | class Point ... end |
| Costruttore | def initialize(x, y) @x = x; @y = y; end |
| Metodo d'istanza | def dist ... end |
| Scorciatoie per gli accessor | attr_accessor :x, :y |
| Creare un'istanza | p = Point.new(1, 2) |
| Ereditare | class Circle < Shape ... end |
| Metodo di classe | def self.origin ... end |
| Definire un modulo | module Drawable ... end |
| Includere un modulo | include Drawable |
| Chiamare super | super(args) |
La sintassi Ruby che usi più spesso, in una sola pagina. Questa Ruby cheat sheet è un riferimento rapido per il cuore del linguaggio: variabili e tipi, stringhe, array e hash, controllo del flusso, metodi e i blocchi, proc e lambda che rendono Ruby così espressivo.
Tutto quello che trovi qui è Ruby puro e funziona con qualsiasi interprete standard. Copia ciò che ti serve o prova ogni snippet dal vivo nel playground Ruby, senza installare nulla.
Domande frequenti sulla Ruby cheat sheet
Questa Ruby cheat sheet è gratuita?
Sì. Questa Ruby cheat sheet è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna qui ogni volta che devi cercare un metodo delle stringhe, un'operazione sugli hash o la sintassi dei blocchi.
Qual è la differenza tra un blocco, una proc e una lambda?
{ ... } o do ... end: da solo non è un oggetto. Una proc racchiude un blocco in un oggetto richiamabile che puoi memorizzare e passare in giro. Una lambda è una proc speciale che controlla in modo rigoroso il numero di argomenti e tratta return come un ritorno dalla lambda stessa, mentre una proc normale ritorna dal metodo che la contiene.Cosa sono i simboli in Ruby?
:name è un identificatore immutabile e riutilizzabile. Poiché lo stesso simbolo punta sempre allo stesso oggetto in memoria, i simboli sono più veloci ed efficienti delle stringhe per cose come le chiavi degli hash e i nomi dei metodi: ecco perché vedi spesso hash scritti come { name: "Ada" }.Posso esercitarmi con Ruby online?
Sì. Apri il playground Ruby per eseguire nel browser qualsiasi snippet di questa cheat sheet, senza installare Ruby. Quando vuoi un percorso strutturato, il corso Ruby interattivo e gratuito di Coddy ti accompagna passo dopo passo da variabili e stringhe fino a blocchi e classi.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dagli argomenti più comuni (variabili, stringhe, controllo del flusso) fino a quelli avanzati (blocchi, proc, classi), così puoi usare le prime sezioni fin dal primo giorno e affrontare il resto man mano che procedi.