[#3986] Re: Principle of least effort -- another Ruby virtue. — Andrew Hunt <andy@...>

> Principle of Least Effort.

14 messages 2000/07/14

[#4043] What are you using Ruby for? — Dave Thomas <Dave@...>

16 messages 2000/07/16

[#4139] Facilitating Ruby self-propagation with the rig-it autopolymorph application. — Conrad Schneiker <schneik@...>

Hi,

11 messages 2000/07/20

[ruby-talk:03924] Re: A question about variable names...

From: Conrad Schneiker <schneik@...>
Date: 2000-07-11 07:07:26 UTC
List: ruby-talk #3924
Hi,

Dave Thomas wrote:

> The rules for name construction seem to be that the first character
> (which determines the name's usage) should be an upper or lowercase
> letter, a dollar sign or an at sign. The remainder of the name is
> drawn from [a-zA-Z0-9_].
>
> So, this means that $3 and @27 and valid names for a global and
> instance variable respectively.
>
>    class Dave
>      def initialize
>      puts n
>        @23 = "hello"
>      end
>      def get
>        @23
>      end
>    end
>
> However, I cannot create a symbol corresponding to the instance
> variable "23" - :23 is invalid syntax.
>
> Then... If I create an attribute for my instance variable using
>
>     attr "23"
>
> I can't use it:
>
>    Dave.new.23
>
> is parsed as passing the argument '0.23' to Dave.new.
>
> So... I'm wondering if allowing a digit as the first character after
> the @ in an instance variable name is a good idea?
>
> What does the panel think?

I suspect the least surprise panel is inclined to rule against it, for
the above reason in conjunction with the following additional reasons.

It goes against what is reasonably common (and a reasonable) practice in
other languages without any strong offsetting reason. In this context
(to elaborate on Hal's comment), I think most people will naturally tend
to tacitly regard @ as a scope type prefix tag on a "conventional"
variable name even though they know it is officially part of the
variable name.

$<number> variables are already (loosely speaking) special/predefined
variables in a number of languages (including Ruby) that (loosely
speaking) function as array element aliases. Allowing @<number>
variables (which are never special) treats 9, $9, and @9 even more
non-uniformly _overall_ , because it is the addition yet another
exception, but an exception with a different _typical_ role/meaning than
the first exception. So I just have to say nine.german_to_english to
this! :-)

--
Conrad Schneiker
(This note is unofficial and subject to improvement without notice.)



In This Thread