Mam niestandardową klasę i chcę mieć możliwość zastąpienia operatora przypisania. Oto przykład:Metoda setera (przypisania) z wieloma argumentami
class MyArray < Array
attr_accessor :direction
def initialize
@direction = :forward
end
end
class History
def initialize
@strategy = MyArray.new
end
def strategy=(strategy, direction = :forward)
@strategy << strategy
@strategy.direction = direction
end
end
To obecnie nie działa zgodnie z przeznaczeniem. przy użyciu
h = History.new
h.strategy = :mystrategy, :backward
[:mystrategy, :backward]
zostanie przypisana do zmiennej strategii i zmienny kierunek pozostaje :forward
.
Ważną częścią jest to, że chcę mieć możliwość przypisania standardowej wartości do parametru kierunku.
Wszelkie wskazówki, dzięki którym to dzieło są bardzo cenne.
Edytowane w celu dodania kolejnej sugestii dotyczącej alternatywnej implementacji. – Phrogz
Podoba mi się sugestia, w której sprawdzasz, czy wartość jest tablicą. Mówisz, że to brutalny hack. Gdzie użycie tego problemu byłoby kłopotliwe? – FlyingFoX
@FlyingFoX Jest to "brutalny hack", o ile nie jest idiomatyczny, a nie samokonujący i nie jest ogólnie stosowany (w przypadku, gdy ktoś może chcieć przekazać tablicę jako pierwszy parametr). – Phrogz