Menu
Coddy logo textTech

Folha de Consulta Ruby

Última atualização

Hello World e executar código

Ruby não precisa de código repetitivo - uma única linha já roda.

OperaçãoSintaxe
Exibir com quebra de linhaputs "Hello, World!"
Exibir sem quebra de linhaprint "Hello"
Inspecionar um valorp [1, 2, 3]
Interpolação de stringputs "Hi #{name}"
Comentário# this is a comment
Comentário de várias linhas=begin ... =end
Executar um arquivoruby app.rb
Shell interativoirb

Variáveis e tipos

Ruby é tipado dinamicamente; tudo é um objeto.

OperaçãoSintaxe
Variável localage = 30
ConstantePI = 3.14
Variável de instância@name = "Ada"
Variável global$count = 0
Símbolo:status
Nil / booleanonil, true, false
Verificar tipo42.class retorna Integer
Converter tipo"42".to_i, 42.to_s, "3.5".to_f

Strings

Strings são objetos mutáveis com um rico conjunto de métodos.

OperaçãoSintaxe
Comprimento"hello".length
Maiúsculas / minúsculass.upcase, s.downcase
Remover espaços em brancos.strip
Substituirs.gsub("a", "b")
Dividir em array"a,b,c".split(",")
Inclui substrings.include?("ell")
Fatiar caracteress[0..2]
Concatenar"foo" + "bar", s << "!"
Repetir"ab" * 3
Formatarformat("%05d", 42)

Arrays

Coleções ordenadas e indexadas por inteiros.

OperaçãoSintaxe
Criarnums = [1, 2, 3]
Acessar por índicenums[0], nums[-1]
Adicionar ao finalnums.push(4), nums << 4
Remover do finalnums.pop
Comprimentonums.length
Mapnums.map { |n| n * 2 }
Filtrarnums.select { |n| n.even? }
Reduzirnums.reduce(0) { |sum, n| sum + n }
Ordenarnums.sort
Juntar em stringnums.join(", ")

Hashes

Coleções chave-valor, geralmente com chaves de símbolos.

OperaçãoSintaxe
Criaruser = { name: "Ada", age: 30 }
Acessar valoruser[:name]
Definir valoruser[:email] = "a@x.com"
Verificar chaveuser.key?(:name)
Excluir chaveuser.delete(:age)
Chaves / valoresuser.keys, user.values
Iteraruser.each { |k, v| puts "#{k}: #{v}" }
Valor padrãoHash.new(0)
Mesclarh1.merge(h2)

Controle de fluxo

Condicionais e laços; note os modificadores no final da linha em Ruby.

OperaçãoSintaxe
If / elsif / elseif x > 0 ... elsif x < 0 ... else ... end
If em linha (modificador)puts "hi" if ready
Unlessunless done ... end
Ternáriox > 0 ? "pos" : "neg"
Case / whencase n; when 1 then ...; else ...; end
Laço whilewhile i < 10 ... end
Laço untiluntil done ... end
Times5.times { |i| puts i }
Iteração de range(1..5).each { |i| puts i }
Break / nextbreak, next

Métodos

A última expressão é retornada implicitamente.

OperaçãoSintaxe
Definir um métododef add(a, b) ... end
Retorno implícitodef square(x) x * x end
Argumento padrãodef greet(name = "World") ... end
Argumentos nomeadosdef box(w:, h:) ... end
Splat (variádico)def sum(*nums) ... end
Método terminando em ?def valid? ... end
Método terminando em !def normalize! ... end
Chamar sem parêntesesgreet "Ada"

Blocos, procs e lambdas

Blocos são trechos de código passados a métodos; procs e lambdas os armazenam.

OperaçãoSintaxe
Bloco (chaves)[1, 2].each { |n| puts n }
Bloco (do/end)[1, 2].each do |n| puts n end
Yield para um blocodef run; yield; end
Verificar se há blocoblock_given?
Capturar bloco como parâmetrodef run(&blk); blk.call; end
Criar um procsquare = proc { |x| x * x }
Criar uma lambdasquare = ->(x) { x * x }
Chamar um proc / lambdasquare.call(3), square.(3)

Classes e módulos

Classes guardam estado e comportamento; módulos incorporam métodos compartilhados.

OperaçãoSintaxe
Definir uma classeclass Point ... end
Construtordef initialize(x, y) @x = x; @y = y; end
Método de instânciadef dist ... end
Atalhos de acessoattr_accessor :x, :y
Criar instânciap = Point.new(1, 2)
Herdarclass Circle < Shape ... end
Método de classedef self.origin ... end
Definir um módulomodule Drawable ... end
Incorporar um móduloinclude Drawable
Chamar supersuper(args)

A sintaxe de Ruby que você mais usa, em uma única página. Esta folha de consulta Ruby é uma referência rápida para o núcleo da linguagem - variáveis e tipos, strings, arrays e hashes, controle de fluxo, métodos, e os blocos, procs e lambdas que tornam Ruby tão expressivo.

Tudo aqui é Ruby puro e roda em qualquer interpretador padrão. Copie o que precisar ou teste cada trecho ao vivo no playground de Ruby - sem necessidade de instalação.

Perguntas frequentes sobre a folha de consulta Ruby

Esta folha de consulta Ruby é gratuita?
Sim. Esta folha de consulta Ruby é totalmente gratuita, sem necessidade de cadastro. Salve nos favoritos e volte sempre que precisar consultar um método de string, uma operação de hash ou a sintaxe de blocos.
Qual é a diferença entre um bloco, um proc e uma lambda?
Um bloco é um trecho de código anônimo passado a um método com { ... } ou do ... end - ele não é um objeto por conta própria. Um proc envolve um bloco em um objeto chamável que você pode armazenar e passar adiante. Uma lambda é um proc especial que verifica a contagem de argumentos de forma estrita e trata o return como um retorno da própria lambda, enquanto um proc comum retorna do método que o contém.
O que são símbolos em Ruby?
Um símbolo como :name é um identificador imutável e reutilizável. Como o mesmo símbolo sempre aponta para o mesmo objeto na memória, os símbolos são mais rápidos e mais eficientes em memória que as strings para coisas como chaves de hash e nomes de métodos - por isso você costuma ver hashes escritos como { name: "Ada" }.
Posso praticar Ruby online?
Sim. Abra o playground de Ruby para executar qualquer trecho desta folha de consulta no seu navegador - sem instalação de Ruby. Quando quiser estrutura, o curso interativo e gratuito de Ruby da Coddy leva você passo a passo de variáveis e strings a blocos e classes.
Esta folha de consulta é boa para iniciantes?
Sim. Ela está organizada dos tópicos mais comuns (variáveis, strings, controle de fluxo) até os avançados (blocos, procs, classes), de modo que você pode usar as seções de cima já no primeiro dia e ir avançando para o resto.
Coddy programming languages illustration

Aprenda Ruby com a Coddy

COMEÇAR