[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01086] Re: YADQ (Yet Another Dumb Question)

From: Dave Thomas <Dave@...>
Date: 2000-01-11 00:58:31 UTC
List: ruby-talk #1086
gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) writes:

> Hi,
> 
> In message "[ruby-talk:01083] YADQ (Yet Another Dumb Question)"
>     on 00/01/10, Dave Thomas <Dave@thomases.com> writes:
> 
> >Why don't I get a warning for this (at either global scope or within a 
> >class definition)?
> >
> >   A = 1
> >   A = 2
> 
> You are using ruby 1.5?

Indeed I am.

> Several months ago, Matz said that `constant' may be renamed to
> `shared variable' or other name in the future.  I need a sort of
> variable which cannot be redefined and I object to lack of `constant'
> but I have not sent comments yet :-<

We'll it seems to me that we already have a mechanism for class
variables:

     class Dave
       AVAL = [0]
     end

     def Dave.aClassVariable= (val)
       Dave::AVAL[0] = val
     end

     def Dave.aClassVariable
       Dave::AVAL[0]
     end


I suspect this could be wrapped with a 'cattr' method in Class.

However, if this change sticks, we'll lose the ability to have
immutable variables, which seems like a big loss.

So, I'd vote for retaining the old semantics of constants.

Regards


Dave


ps:

When I tried my example, I found another difference between method
names starting with upper and lower case characters:


   def Dave.A=(val)  parse error

   def Dave.a=(val)  OK

In This Thread