/ / Predvolená metóda prístupu Ruby? - rubín, chýba metóda

Predvolená metóda Ruby accessor? - rubín, chýba metóda

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.