Rafael Pereira Alonso
Computer Science student at the Federal University of São Carlos - Sorocaba and Ruby On Rails Teacher
Sintaxe Básica
# Sem 'var', sem tipo (int, char, etc.), sem ';'
nome = "Rafael"
idade = 21
money = 31.50
arr = ['1', 2, 3.0]
bool = false
rang = (1..100)
nulo = nil
# Para saber o tipo da variável... '.class'
nome.class #=> String
idade.class #=> Integer
money.class #=> Float
arr.class #=> Array
true.class #=> TrueClass
bool.class #=> FalseClass
nil.class #=> NilClass
rang.class #=> Range
# def nome_do_metodo (parametros)
# codigo
# end
def greet(name)
return 'Hello, ' + name + '!'
end
puts greet('World') #=> 'Hello, World!'
def greet(name)
return 'Hello, ' + name + '!'
end
# Pega um input do usuário -> 'gets.chomp'
name = gets.chomp
# Imprime algo na tela -> 'puts'
puts greet(name)
# Imprime o exato 'objeto' -> p
p [9, 1, '2', nil, false]
# Jeito completo
if condition
# code if condition is true
elsif other_condition
# code if other_condition is true
else
# code if condition and other_condition are false
end
# Ternário
condition ? code_if_true : code_if_false
# One line if
code_to_do if condition
# if not == unless
code_to_do unless condition
# Múltiplos elsif's? Melhor usar case when
case variable
when condition_1
# code when variable == condition_1
when condition_2, condition_3
# code when variable == condition_2 || variable == condition_3
when condition_4
# code when variable == condition_4
else
# code when variable didn't match any condition
end
# Repita o código até a condição se tornar falsa
while condition
# code_to_repeat
end
# Repita o código até a condição se tornar verdadeira
until !condition
# code_to_repeat
end
# Repita o código 10 vezes
for var in 1..10 #=> (1..10) == 1,2,3,4,5,6,7,8,9,10 (Range from 1 to 10)
# code_to_repeat
end
# Repita o código para cada uma das posições da array
metallica = ["James", "Lars", "Robert", "Kirk"]
for name in metallica
puts "#{name} rocks!"
end
# Resultado do 2º for:
James rocks!
Lars rocks!
Robert rocks!
Kirk rocks!You can never write enough
# spec/hello_world_spec.rb
# Podemos requerir o arquivo lib/hello_world.rb da seguinte forma
require 'hello_world'
# Por convenção (apenas), ao escrevermos testes sobre um método específico,
# encapsulamos tudo dentro de um "describe '#nome_do_metodo'", assim:
describe '#hello_world' do
# "it" é a palavra-chave para descrever o que iremos testar e fazer o teste
# em si
it 'Should say "Hello, World!" if no arguments are passed' do
# expect é o que o RSpec irá sinalizar (no terminal) se passou como esperado
# ou não
expect( hello_world ).to eq("Hello World!")
end
it 'Should say "Hello, #{name}!" if a name is passed' do
expect( hello_world('Rafa').to eq("Hello Rafa!")
end
endKeep it nice, keep it clean
$ rubocopDoes Ruby stuff for you
# rubocop:disable all
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
desc 'Look for style guide offenses in your code'
task :rubocop do
sh 'rubocop --format simple || true'
end
task default: [:rubocop, :spec]
By Rafael Pereira Alonso
Primeira Aula da Atividade Complementar de Ruby On Rails, lecionada na Universidade Federal de São Carlos, campus Sorocaba, no primeiro semestre de 2019
Computer Science student at the Federal University of São Carlos - Sorocaba and Ruby On Rails Teacher