Olá pessoal, estou já a 1 hora tentando encontrar o problema e não o acho, aparentemente não consigo acessar o atributo "ano_lancamento" e, por isso, o meu programa não consegue efetuar o cálculo "@ano_lancamento < 2006", segue abaixo erro e código:
Erro:
livro.rb:11:in calcula_preco': undefined method
<' for nil:NilClass (NoMethodError)
from livro.rb:5:in initialize'
from livro.rb:38:in
new'
from livro.rb:38:in `'
Código
class Livro
attr_reader :titulo, :preco, :ano_lancamento
def initialize(titulo, preco, ano_lancamento, possui_reimpressao)
@titulo = titulo
@preco = calcula_preco preco
@ano_lancamento = ano_lancamento
@possui_reimpressao = possui_reimpressao
end
private
def calcula_preco(base)
if @ano_lancamento < 2006
if @possui_reimpressao
base * 0.9
else
base * 0.95
end
elsif @ano_lancamento <= 2010
base * 0.96
else
base
end
end
def possui_reimpressao?
@possui_reimpressao
end
end
def exporta_csv(estoque)
estoque.each do |livro|
puts "#{livro.titulo},#{livro.ano_lancamento}"
end
end
algoritmos = Livro.new("Algoritmos", 100, 1998, true)
arquitetura = Livro.new("Introdução À Arquitetura e Design de Software",70, 2011, true)
estoque = [algoritmos, arquitetura]
exporta_csv estoque