[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03284] Re: BUG or something?

From: Dave Thomas <Dave@...>
Date: 2000-06-12 12:09:48 UTC
List: ruby-talk #3284
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:

> On 12 Jun 2000, Dave Thomas wrote:
> 
> > 
> > How about making any assignment to one of these globals-with-a-
> > side-effect generate a warning if -w was in effect. That way you'd at
> > least know that it was happening.
> 
> Would it be possible to have a test for "when calling this code, it
> is possible to exit leaving a global variable changed"?.  There are
> only so many wasy to leave a method, module... without completely
> crashing.

Well, you _could_ implement Perl's 'local' facility for Ruby globals:


     def local(*syms)
       save = {}
       syms.each { |aSym| save[aSym] = (eval "#{aSym}") }
       begin
         yield
       ensure
         save.each { |aSym, aVal|  eval "#{aSym} = aVal" }
       end
     end

You'd call this with

     local (<list of globals to save>) {

         code that modifies them

     }

    <values restored here>

For example:

     $; = "hello"
     $/ = "goodbye"
     $, = ", "

     local(:$;, :$/, :$,) {
       $; = 'hi';
       $/ = nil
       $, = " - "
       print $;, $/, "\n"     #=> hi - nil - 
     }

     print $;, $/, "\n"       #=> hello, goodbye, 


This is pretty tacky code - the 'local' method should check that it is
only passed true globals, and should reject $_ and $!. That's left as
an exercise to the reader (as we say) ;-)


Dave

In This Thread