I may really be misremembering the with statement from Pascal, but, as I recall it was more of a namespace / shortcut kind of thing. For example: If you have a data structure named Person, which has a bunch of fields within it, like FirstName, LastName, Address, ... You could either assign data to those fields with syntax something like (that was a long time ago, and I'm getting old): Person.FirstName := William Person.LastName := Smith ... or you could use the with statement, something like this: with Person begin FirstName := William LastName := Smith ... end (Sorry about the syntax errors that I know must be there--like I said, it was a long time ago. Oh, yeah--semicolons! And keywords in all caps! Forgetting can be good ;-) I guess my point is, in these discussions about finding a way to simulate the Pascal "with" statement in Ruby, it doesn't seem like you (a very generic you) are targetting the with functionality from Pascal. On the other hand, I suspect there must be ways of doing that in Ruby--I just can't think of those atm. Randy Kramer On Tuesday 23 October 2007 01:48 pm, Pete Elmore wrote: > On 21/10/2007, Dan Yoder <dan / zeraweb.com> wrote: > > module Kernel > > def with(object,&block) > > object.instance_eval &block > > end > > end > > > > with([1,2,3]) { length } # => 3 > > You could even do something like this: > > module Kernel > def with_block(*args, &block) > send(*args) { |obj| obj.instance_eval &block } > end > end > > ['asdf', 'jkl', 'semicolon'].with_block(:map) { length } # => [4, 3, 9] > > That would allow something like this: > <% with_block(:form_for, :user, @user) { %> > <%= text_field :name %> > <%= text_field :email %> > <%= password_field :password %> > <% } %> > > It may or may not be useful, but it's fun. > >