1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Desafio Ruby 4.21 apostila caelum

Tudo bem pessoal? Sou totalmente novo em Ruby e estou estudando blocos, como sempre a Caelum esta de parabéns, ótimo material.

O desafio 4.21 diz o seguinte:

Queremos imprimir o nome de todos os alunos de uma turma com o código a seguir:

fj91 = Turma.new("Guilherme", "Paulo", "Sérgio")
fj91.each do |nome|
puts nome
end

Crie a sua classe Turma que durante a invocação do método each, itera por todos os nomes passados em seu construtor.

Tente lembrar dos conceitos de blocos e programação funcional para resolver.

Fiz da seguinte maneira:

class Turma     
   attr_accessor :nome

   def initialize(*nomes)
     @nome=[] 
     nomes.each do |nome| 
       @nome<<nome         
     end
   end

   def each         
     yield(@nome)     
   end 
end 

fj91=Turma.new("Guilherme","Paulo","Sergio")

fj91.each do |nome|     puts nome end

Está correto dessa maneira? ou a implementação é outra? Como eu tenho que usar o método each no próprio objeto e não no atributo nome, imaginei que eu teria criar o método each e não usar o método each do próprio ruby como abaixo:

fj91.nome.each...

O usuo do yield eu não entendi muito bem ainda, porém se eu tirar ele o código não funciona.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ruby ruby-on-rails ou faça a sua própria pergunta.