Existuje predvolená metóda alebo prístupový objekt triedyMôžem pridať do triedy Ruby, ktorá sa volá, ak sa prístupový objekt (vlastnosť podobná Ruby) neukončí? Potom môžem napísať vlastný kód, z ktorého môžem odpovedať, ako je zoznam polí načítaný z databázy, kde je možné pristupovať k hodnote ako prístupový objekt bez toho, aby som napísal prístupový kód (keďže ak je načítaný z databázy, nie je známy).
Použitie Ruby MRI 1.9
Ďakujem!
odpovede:
10 pre odpoveď č. 1Áno, volá sa method_missing
; volá sa vždy, keď sa použije nedefinovaná metóda. Môžete ho použiť na pridanie alebo emuláciu ľubovoľnej metódy, vrátane prístupových prvkov.
Napríklad, ak to hodíte na a Hash
s obsahom hashu môžete zaobchádzať ako s vlastnosťami:
h = {}
def h.method_missing(*args)
if args.length == 1
self[args[0]]
elsif args.length == 2 and args[0].to_s =~ /^(.*)=$/
self[$1.intern] = args[1]
else
super
end
end
napíš si:
h.bob = "Robert"
a
if h.bill == "William" ...
a tak ďalej okrem normálnejších h[:bob] = ...
štýl.