Ruby: Anonyme Methode generieren und ausführen

Ich spiele ja im moment ein bisschen mit ruby rum. Ist schon ganz nett…

=begin
Dies ist ein Test ob Ruby Code generieren kann
und man diesen dann spaeter ausfuehren kann.

run erwartet eine array mit ruby befehlen
diese werden zusammengefuegt
Anschliessend wird eine Referenz eines Proc Objektes
zurueck gegeben.
=end

class MyClosure
    def run (param )
        expr = ""
        param.each{|x| expr = expr+x }
        return proc{eval(expr)}
    end
end
# 5+4*3 = 17
xp = [5‘,’+‘,’4‘,’*‘, ‘3]
m = MyClosure.new()
x1= m.run(xp)
#(2+1)*4
xp = [(‘,’2‘,’+‘,’1‘,’)‘,’*‘, ‘4]
x2= m.run(xp)
print x1.call, "\n" #prints 17
print x2.call       #print 12

Hinterlasse eine Antwort