Ruby essencial
Só o suficiente de sintaxe Ruby pra ler Rails com confiança — não é um curso de Ruby inteiro.
Esta lição não ensina Ruby do zero absoluto — ensina o vocabulário mínimo pra você ler código Rails sem travar em cada linha. O resto você aprende vendo Rails de verdade, nas próximas lições.
Tudo é objeto, até número
3.times { puts "oi" } # números têm métodos
"oi".upcase # "OI" — string tem método, sem função solta upcase("oi")
5.even? # false — "?" no final é convenção pra método que retorna booleanoBlocos — a coisa mais "Ruby" da linguagem
Um bloco é uma função anônima passada pra outro método, com duas sintaxes equivalentes: { } pra uma linha, do...end pra várias.
[1, 2, 3].map { |n| n * 2 } # => [2, 4, 6]
[1, 2, 3].map do |n|
n * 2
end # => [2, 4, 6] — mesmo resultado, sintaxe diferenteHash e símbolo
Um Hash é um objeto chave-valor (como um dicionário). Um símbolo (:nome) é um texto imutável usado como identificador — Rails usa símbolo pra chave de hash o tempo todo.
usuario = { nome: "Ana", ativo: true }
usuario[:nome] # "Ana"
usuario[:ativo] # trueClasse — o parecido com o que você já sabe
class Usuario
attr_reader :nome # gera um "getter" automático — sem escrever o método na mão
def initialize(nome) # o "construtor"
@nome = nome # @ = atributo de instância (equivalente a this.nome)
end
end
Usuario.new("Ana").nome? e ! — convenções, não sintaxe especial
Um método terminado em ? retorna booleano por convenção (ativo?). Um método terminado em ! é a versão "perigosa" — muda o objeto no lugar em vez de retornar uma cópia (sort retorna nova lista; sort! reordena a lista original).
Exercício
Escreva uma classe Produto com attr_reader :nome, :preco e um método caro? que retorna true se preco for maior que 100.