Skip to content

Instantly share code, notes, and snippets.

@FernandoLins8
Created September 30, 2021 02:37
Show Gist options
  • Save FernandoLins8/2ddcd74a9081fe56ee06adcf7efbb4b9 to your computer and use it in GitHub Desktop.
Save FernandoLins8/2ddcd74a9081fe56ee06adcf7efbb4b9 to your computer and use it in GitHub Desktop.
Ruby Cheat Sheet

Ruby Programming Language

Resumo retirado do vídeo Ruby Programming do canal Derek Banas.

O código original pode ser encontrado aqui.

Basic

puts "Hello World"

name = "John Doe"
puts ("Hello" + name)

PI = 3.14
PI = 3.1
puts PI

Operadores Aritméticos

puts "6 + 4 = " + (6+4).to_s
puts "6 - 4 = " + (6-4).to_s
puts "6 * 4 = " + (6*4).to_s
puts "6 / 4 = " + (6/4).to_s
puts "6 % 4 = " + (6%4).to_s

Operadores Logicos

puts "true && false = " + (true && false).to_s
puts "true && false = " + (true || false).to_s
puts "!true = " + (!true).to_s

Condicionais

If

number = 5
if number == 3
  puts "number is 3"
elsif number == 4
  puts "number is 4"
else
  puts "number is neither 3, nor 4"
end

Case

case greeting
when "French", "french"
  puts "Bonjour"
  exit
when "Spanish", "spanish"
  puts "Hola"
  exit
else
  puts "Hello"
end

Unless

wearing_mask = true
unless wearing_mask
  puts "Stay at home"
else
  puts "You can go out"
end

If ternário

puts (age >= 50) ? "Old" : "Young"

Repetições

Loop

x = 1
 
loop do
  x += 1
 
  next unless (x % 2) == 0
  puts x
 
  break if x >= 10
end

While

y = 1
 
while y <= 10
  y += 1
  next unless (y % 2) == 0
  puts y
  break if y >= 10
end

Begin

begin
  z += 1
  next unless (z % 2) == 0
  puts z
  break if z >= 10
end while z <= 10

Until

until a >= 10
  a += 1
  next unless (a % 2) == 0
  puts a
end

For

numbers = [1, 2, 3, 4, 5]
  
for number in numbers
  puts "#{number}, "
end
 

Each

groceries = ["bananas", "apples", "Grapes"]
 
groceries.each do |food|
  puts "Get some #{food}"
end

Range

(0..5).each do |i|
  puts "# #{i}"
end

Funções (Métodos)

def greet(name="Stranger")
  puts "Hello " + name
end
 
puts greet("John Doe")
puts greet()

Classes

Definindo

# Inicializando
class Animal
  def initialize
    puts "Creating a New Animal"
  end
  
  # Definindo setters
  def set_name(new_name)
    @name = new_name
  end

  # Outra forma de definir setters
  def name=(new_name)

  # Definindo getters
  def get_name
    @name
  end
 
 # Outra forma de definir getters
  def name
    @name
  end
end

Utilizando

cat = Animal.new
cat.set_name("Bixano")

puts cat.get_name
puts cat.name
 
cat.name = "Kitty"
puts cat.name

Atalhos

class Person
  # Atalho para criar getters
  attr_reader :name, :height, :weight
 
  # Atalho para criar setters
  attr_writer :name, :height, :weight

  #Atalho para criar ambos
  attr_accessor :name, :height, :weight
 
  def bark
    return "woof"
  end
end
 
dog = Dog.new
dog.name = "Totó"
puts dog.name
puts dog.bark

Herança

Ao herdar, uma classe recebe todos os métodos e variáveis. Só é possível herdar de uma classe.

class ScaryDog < Dog
  def bark
    return "Loud Bark"
  end
end
 
dangerous_looking_dog = ScaryDog.new
dangerous_looking_dog.name = "unknown"
puts dog.bark

Modulos

module Smart
 
  def act_smart
    return "E = mc²"
  end
end

module Human
  attr_accessor :name, :height, :weight
 
  def run
    puts self.name + " runs"
  end
end

class Scientist
  include Human
  prepend Smart # Métodos em Smart irão sobrescrever os atuais
 
  def act_smart
    return "E = mc^2"
  end
 
end
 
einstein = Scientist.new
einstein.name = "Albert"
puts einstein.name
 
einstein.run
puts einstein.name + " says " + einstein.act_smart

Hashes

states = {
  "AL" => "Alagoas",
  "PE" => "Pernambuco"
}

puts states
puts states["SP"]
puts states["AL"]

states["RJ"] = "Rio de Janeiro"
puts states

Exemplos

Palíndromos

Dada uma palavra a função is_palindrome retornará um booleano indicando se a palavra é um palíndromo.

def is_palindrome(str)
  original = str.split('')
  reversed = original.reverse()
  return original == reversed
end

puts is_palindrome('teste')     # falso
puts is_palindrome('ovo')       # verdadeiro
puts is_palindrome('arara')     # verdadeiro
puts is_palindrome('reviver')   # verdadeiro

Fatorial

Dado um número inteiro a função factorial retornará um array com os fatoriais até o número atual.

def factorial(number)
  factorials_array = [1]
  (1..number).each do |i|
    fat = factorials_array[i - 1] * i
    factorials_array.push(fat)
  end
  return factorials_array
end

puts factorial(10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment