From: "Bermejo, Rodrigo" Date: 2004-02-10T04:12:54+09:00 Subject: Re: evaluate and print an expression def evaluate(code) puts "#{code}==>" eval code end evaluate("1+2==3") 1+2==3 ==> true Piergiuliano Bossi wrote: > I hope that what I'm asking doesn't sound too weird, but I'm trying to > understand if in ruby is possible to print and evaluate an expression > at the same time. I know for example that I can do like this: > > irb(main):001:0> expr = "1+2==3" > => "1+2==3" > irb(main):002:0> puts expr + ' ==> ' + (eval expr).to_s > 1+2==3 ==> true > => nil > > What I don't like is to specify the expression as a string. I'd rather > prefer to manage code directly, but I don't know exactly how to print > it and evaluate it at the same time. Ideally, I'd like to change the > following code in order to print block body: > > irb(main):012:0> def evaluate(&code) > irb(main):013:1> p code > irb(main):014:1> code.call > irb(main):015:1> end > => nil > irb(main):016:0> evaluate { 1+2==3 } > # > => true > > Do you see what I mean? Instead of having: > # > I'd like to get: > { 1+2==3 } > or something like that. > > I know that in lisp this can be easily done due to its nature (that > is, code is data and data is code), but in ruby? > > Thanks for your help! > Ciao, Giuliano >