Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Ao definir o método com a interrogação, apresenta erro. Sem a interrogação funciona. Alguem pode explicar?

class Livro
  attr_reader :titulo, :ano, :preco
  def initialize(titulo, ano, preco, possui_reimpressao)
    @titulo = titulo
    @ano = ano
    @preco = calcula_preco(preco)
    @possui_reimpressao = possui_reimpressao
  end

  def calcula_preco(preco)
    if ano < 2000
      preco *= 0.7
    else
      preco
    end
  end

  def possui_reimpressao?
    @possui_reimpressao
  end

end

java = Livro.new("'Como o Java pode atrasar sua vida.'", 1997, 100.00, true)
agile = Livro.new("'Agile Web Development with Rails'", 2011, 70.55, true)

livros = [java, agile]

def lista(livros)
  puts "-------- Lista dos livros --------"
  livros.each do |livro|
    puts "#{livro.titulo} - #{livro.ano} - #{livro.preco} - Reimpressões: #{livro.possui_reimpressao}"
  end
  puts
end

def newsletter livros
  puts "-------- Newsletter de livros com desconto --------"
  livros.each do |livro|
    if livro.ano < 2000
        puts "#{livro.titulo} - #{livro.ano} - #{livro.preco}"
    end
  end
  puts
end

lista livros
newsletter livros
2 respostas
solução!

Oi Felipe, você precisa chamar o método usando a interrogação também.

Essa linha tá sem:

puts "#{livro.titulo} - #{livro.ano} - #{livro.preco} - Reimpressões: #{livro.possui_reimpressao?}"

Po, até tava achando estranho pq o nome do método ficaria confuso com o nome do atributo na hora da chamada. O ? faltando esclarece tudo. Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software