P
Piergiuliano Bossi
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 }
#<Proc:0x02a4ea78@(irb):16>
=> true
Do you see what I mean? Instead of having:
#<Proc:0x02a4ea78@(irb):16>
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
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 }
#<Proc:0x02a4ea78@(irb):16>
=> true
Do you see what I mean? Instead of having:
#<Proc:0x02a4ea78@(irb):16>
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