edem eredeti hozzászólása
Egyébként más nyelvekben is van változó változó?
Nos, Rubyban erre nincs szükség, mert nincsenek változók a fogalom hagyományos értelmében, mert minden egy objektum.
A klasszikus példa az, hogy Kód:
'macska'.upcase! * 2
Ennek az eredménye, hogy Vegyük következő Ruby kódot:
Kód:
x = "macska #{csel}"
csel = 'facsel'
(x+" ")*3
Ennek procedurálisan gondolkozva sok értelme nem lenne. De ennek ellenére ez egy teljesen jó Ruby kód, az eredménye:
Kód:
macska facsel macska facsel macska facsel
Ugyanakkor:
Kód:
csel = 'facsel'
alma = 'csel'
eval alma
eredménye
Miért? Mert az eval a string tartalmát Ruby kódként értelmezi. Ez nagyon hasonlít a PHP azonos nevű függvényéhez, de azért mégsem az.
De van tovább is:
Kód:
csel = 'macska'
alma = '(csel+" ")*3'
eval alma
Ennek az eredménye:
Kód:
macska macska macska
Ha nem akarsz evalt használni, akkor kell írj egy osztály. Így megkaphatod a macska változó értékét, ha amúgy nem tudod a változó nevét, csak azt, hogy a cica változó tartalmazza. Ez kb. a $$cica lesz. Nem nehéz megírni attr_accessorral.
Könyvjelzők