On Sun, Feb 10, 2013 at 9:25 PM, Joel Pearson <[email protected]> wrote:
> I've looked around but I couldn't find anything helpful on this,
> although I'm sure it's been covered before:
> Does Ruby have an equivalent to the "With / End With" syntax helper in
> VB? It would be quite helpful when I need to execute a series of methods
> on an object, but for various reasons (e.g. testing individual returns
> or methods which may return nil) I don't want to chain them together.
>
> To illustrate, here's the VB syntax I'm referring to:
>
> With my_object
>   .do1
>   .do2
>   .do3
> End With

my_object.instance_eval do
  # self points to my_object here
  do1
  do2
  do3
end

You can of course use a different method name, i.e. alias
#instance_eval to #with.

However, there is one gotcha

foo.bar = 99

cannot be translated to

foo.instance_eval do
  bar = 99
end

because bar will be a local variable then.  Instead you have to use

foo.instance_eval do
  self.bar = 99
end

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

-- 
[email protected] | 
https://groups.google.com/d/forum/ruby-talk-google?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"ruby-talk-google" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to