On Thu, Feb 19, 2009 at 9:10 PM, Robert Klemme
<shortcutter / googlemail.com> wrote:
> 2009/2/19 lasitha <lasitha.ranatunga / gmail.com>:
>> Oops, sorry - please ignore the bit about using a Proc.  It doesn't
>> solve anything since all it does is parameterize the result and you
>> could have done that with just a regular method.
>>
>> So at this point eval is all i can think of (see Robert's post).
>
> Still I would consider an ordinary method or a lambda superior to
> using eval.  I try to avoid eval whenever possible  [...]

True, thanks for prodding me to think it through again :)
The following is indeed nicer than eval:

$: irb
01> x = 1
--> 1
02> s = lambda { "This is #{x}" }
--> #<Proc:0x733930@(irb):2 (lambda)>
03> s.call
--> "This is 1"
04> x = 2
--> 2
05> s.call
--> "This is 2"

Ashikali, the caveat here is that 'x' has to be assigned before the
Proc is created.  The initial assignment could be to nil though, the
interpreter just needs it to have seen it.

Cheers,
lasitha.