Ruby non supporta l'overloading dei metodi.
http://ruby.html.it/faq/leggi/1229/r...ng-dei-metodi/
Esistono cmq dei workaround.
codice:
def posti(*args)
if args.length == 1
@posti = args.first
else
return @posti
end
end
In realtà, per esperienza, ti assicuro che sentirai molto poco questa mancanza.
Normalmente questo problema accade solo quando si tenta di ragionare in Ruby pensando ad un altro linguaggio.
Per sviluppare con Ruby devi poco per volta imparare a ragionare in Ruby.
Quello che tu vuoi fare è equivalente a
codice:
def posti
@posti
end
def posti=(nuovi_posti)
@posti = nuovi_posti
end
che si traduce semplicemente in
codice:
attr_accessor :posti
In altre parole, tutta la tua classe diventa
codice:
class Camion
def initialize(posti, carburante)
@posti = posti # meglio usare self.posti = posti
@carburante = carburante
end
end
c = Camion.new(30,100)
puts c.posti