Olá quendo eu executo o meu código me deparo com o seguite erro :
C:/Users/mateus viana/Videos/Ruby/exercisiosAlura/Curso Ruby Orienta��o Objeto/Sistema De Compras de Livros/Sistema.rb: C:/Users/mateus viana/Videos/Ruby/exercisiosAlura/Curso Ruby Orientação Objeto/Sistema De Compras de Livros/Estoque.rb:28: syntax error, unexpected ',', expecting ')' (SyntaxError) que_mais_vendeu_por(&:titulo , "LIVRO") ^
C:/Users/mateus viana/Videos/Ruby/exercisiosAlura/Curso Ruby Orientação Objeto/Sistema De Compras de Livros/Estoque.rb:28: syntax error, unexpected ')', expecting keyword_end que_mais_vendeu_por(&:titulo , "LIVRO") ^
C:/Users/mateus viana/Videos/Ruby/exercisiosAlura/Curso Ruby Orientação Objeto/Sistema De Compras de Livros/Estoque.rb:32: syntax error, unexpected ',', expecting ')' def que_mais_vendeu_por( &campo , tipo)
segue meu código abaixo :
Estoque.rb
require_relative 'Contador.rb'
class Estoque
attr_reader :livros
def initialize()
@livros = []
@vendas = []
@livros.extend(Contador)
end
def quantidade_de_vendas_por(produto , &campo)
@vendas.count {|venda| campo.call(venda) == campo.call(produto) }
end
def que_mais_vendeu_por(tipo , &campo)
@vendas.select {|produto| produto.tipo == tipo}.sort {|v1 , v2|
quantidade_de_vendas_por(v1 , &campo) <=> quantidade_de_vendas_por(v2 , &campo)
}.last
end
def livro_que_mais_vendeu_por_editora()
que_mais_vendeu_por("LIVRO" , &:editora)
end
def livro_que_mais_vendeu_por_ano()
que_mais_vendeu_por("LIVRO", &:ano_lancamento)
end
def livro_que_mais_vendeu_por_titulo()
que_mais_vendeu_por("LIVRO" , &:titulo)
end
def revista_que_mais_vendeu_por_editora()
que_mais_vendeu_por("REVISTA" , &:eitora)
end
def revista_que_mais_vendeu_por_ano()
que_mais_vendeu_por("REVISTA" ,&:ano_lancamento)
end
def revista_que_mais_vendeu_por_titulo()
que_mais_vendeu_por("REVISTA" , &:titulo)
end
def exporta_csv()
@livros.each do |livro|
livro.to_csv
end
end
def mais_baratos_que(valor)
@livros.select do |livro|
livro.preco <= valor
end
end
def vende(livro)
@livros.delete(livro)
@vendas << livro
end
def maximo_necessario()
@livros.maximo_necessario
end
def total()
@livros.size
end
def <<(livro)
if livro
@livros << livro
end
self
end
Livro.rb
class Livro
attr_reader :titulo , :preco , :ano_lancamento , :editora , :tipo
def initialize(titulo , preco , ano_lancamento , possui_reimpressao , editora , tipo)
@titulo = titulo
@preco = preco
@ano_lancamento = ano_lancamento
@preco = calcula_preco(preco)
@possui_reimpressao = possui_reimpressao
@editora = editora
@tipo = tipo
end
def possui_reimpressao?()
return @possui_reimpressao
end
def to_csv()
puts ("\n")
puts ("|-----------------------------------------------------------------|")
puts ("| #{@titulo},#{@ano_lancamento},#{@preco}")
puts ("|-----------------------------------------------------------------|")
end
private
def calcula_preco(base)
if @ano_lancamento < 2006
if @possui_reimpressao
return base *= 0.90
else
return base *= 0.95
end
elsif @ano_lancamento <= 2010
return base *= 0.96
else
return base
end
end
end
def imprime_nota_fiscal(livros)
puts ("\n\n")
puts ("|-----------------------------------------------------------------|")
puts ("| LIVROS EM ESTOQUE : |")
puts ("|-----------------------------------------------------------------|")
livros.each do |livro|
puts ("\n")
puts ("|---------------------------------------------------------------|")
puts ("|TITUTO DO LIVRO : #{livro.titulo}")
puts ("|PREÇO DO LIVRO : #{livro.preco}")
puts ("|ANO DE LANÇAMENTO : #{livro.ano_lancamento}")
puts ("|---------------------------------------------------------------|")
end
end
def mostra_newslatter(livro)
if livro.ano_lancamento < 2000
puts ("\n\nLIVROS DA NEWSLATTER")
puts ("\nTITULO : #{livro.titulo}")
puts ("\nPREÇO : #{livro.preco}")
puts ("\nANO DE LANÇAMENTO : #{livro.ano_lancamento}")
end
Sistema.rb
require_relative 'Livro.rb'
require_relative 'Estoque.rb'
agile = Livro.new("AGILE WEB DEVELOPMENT WITH RAILS",70.0,1999 , true , "CASA DO CÓDIGO" , "LIVRO")
desing_software = Livro.new("INTRODUÇÃO À ARQUITETURA E DESING DE SOFTWARE" ,70.0, 2011,true , "LEYA" , "LIVRO")
ruby = Livro.new("PROGRAMING RUBY",50.0,2010,true , "LEYA" , "LIVRO")
estoque = Estoque.new
estoque << agile
estoque << desing_software
estoque << ruby
estoque.vende(ruby)
puts estoque.livro_que_mais_vendeu_por_titulo.titulo
Contador.rb
module Contador
attr_reader :maximo_necessario
def << (livro)
push(livro)
if @maximo_necessario.nil? || @maximo_necessario < size
@maximo_necessario = size
end
self
end
def maximo_necessario()
return @maximo_necessario
end
end
se alguem souber como resolver por favor me ajude .....