Ruby Avançado: Blocks, Lambdas e Módulos | OneBitCode

Ruby Avançado: Blocks, Lambdas e Módulos 🚀

Aula 8 do curso de Ruby da OneBitCode

Blocks em Ruby

Blocks são funções anônimas (sem nome) que encapsulam um conjunto de instruções. Podem ser passados como argumentos para métodos.

🔹 Sintaxe com {}

3.times { puts "Hello!" }

🔸 Sintaxe com do/end

[1, 2, 3].each do |num| puts num * 2 end

Criando Métodos que Aceitam Blocks

def greet puts "Before block" yield # Executa o block puts "After block" end greet { puts "Inside the block" }

Lambdas em Ruby

Lambdas são objetos que encapsulam funções anônimas e podem ser armazenados em variáveis.

# Criando um lambda capitalize = lambda { |name| name.capitalize } # Chamando o lambda puts capitalize.call("leonardo") # "Leonardo"

Diferenças entre Blocks e Lambdas

Característica Block Lambda
Armazenável em variável ❌ Não ✅ Sim
Verifica número de argumentos ❌ Não ✅ Sim
Retorno Retorna do método Retorna apenas do lambda

Módulos em Ruby

📂 Namespaces

Agrupar classes/métodos para evitar conflitos de nomes

module Finance class Invoice # ... end end inv = Finance::Invoice.new

🧩 Mixins

Reutilizar métodos em múltiplas classes

module Loggable def log(message) puts "[LOG] #{message}" end end class Product include Loggable end

Include vs Extend

module Tools def hammer "Hammering!" end end class Worker include Tools # Métodos de instância end class Company extend Tools # Métodos de classe end Worker.new.hammer # "Hammering!" Company.hammer # "Hammering!"

🎯 Missões Especiais

  1. Capitalize com Lambda: Crie um lambda que usa o método capitalize e passe-o para um método capitalize_name que aplica o lambda a dois nomes diferentes.
    # Exemplo de uso: capitalize_name(lambda { |n| n.capitalize }, "leonardo", "maria") # Deve retornar ["Leonardo", "Maria"]
  2. Módulo Person: Crie um módulo Person com classes Juridical e Physical que mostram mensagens específicas quando instanciadas.
  3. Pesquisa sobre Procs: Pesquise sobre Proc no Ruby e implemente pequenos exemplos para entender as diferenças entre Proc e lambda.

Próximos Passos

Na próxima aula, exploraremos:

  • Expressões Regulares (Regexp) em Ruby
  • Trabalhando com datas e horas
  • Manipulação avançada de strings
  • Métodos úteis da classe Time

© 2023 OneBitCode - Todos os direitos reservados

Transformando iniciantes em desenvolvedores profissionais

Postar um comentário

0 Comentários