Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Referncing values of local variables (http://www.velocityreviews.com/forums/t835607-referncing-values-of-local-variables.html)

Thomas Luedeke 11-17-2006 05:17 PM

Referncing values of local variables
 
I apologize in advance, because I know this gets asked again and again
(and again.....) by newbies, but my searches don't show a clear answer,
and none of my attempts work.

This should be simple. I want to define a constant,

a = 3

then reference the value of a in arguments like,

temp_array = Array.new(a)


such that the temp_array is assigned a size of 3.


This always seems to result in complaints about undefined local variable
or methods. Eval doesn't seem to make it work.

What I am doing wrong??

--
Posted via http://www.ruby-forum.com/.


Stefano Crocco 11-17-2006 05:21 PM

Re: Referncing values of local variables
 
> This should be simple. I want to define a constant,
>
> a = 3
>


In ruby, constant names begin with a capital letter (it is common
practice to use fully uppercase names) :

MY_CONSTANT=3

or

My_constant=3

Variable names starting with a lowercase letter define local variables.

--
Posted via http://www.ruby-forum.com/.


dblack@wobblini.net 11-17-2006 05:23 PM

Re: Referncing values of local variables
 
Hi --

On Sat, 18 Nov 2006, Thomas Luedeke wrote:

> I apologize in advance, because I know this gets asked again and again
> (and again.....) by newbies, but my searches don't show a clear answer,
> and none of my attempts work.
>
> This should be simple. I want to define a constant,
>
> a = 3


That's not a constant; it's a local variable. It sounds like you
might be running into scoping issues.

> then reference the value of a in arguments like,
>
> temp_array = Array.new(a)
>
>
> such that the temp_array is assigned a size of 3.
>
>
> This always seems to result in complaints about undefined local variable
> or methods. Eval doesn't seem to make it work.


I suspect you're doing something like:

a = 3
def my_method
temp_array = Array.new(a)
end

where a has gone out of scope by the time you use it.

You can use a constant:

A = 3

though that would normally be considered overkill, and bad design,
unless it's really a constant that needs to be defined outside of any
method, rather than a local variable or method argument.


David

--
David A. Black | dblack@rubypal.com
Author of "Ruby for Rails" [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB's Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] http://www.manning.com/black | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org


Thomas Luedeke 11-17-2006 05:25 PM

Re: Referncing values of local variables
 
Stefano Crocco wrote:
>> This should be simple. I want to define a constant,
>>
>> a = 3
>>

>
> In ruby, constant names begin with a capital letter (it is common
> practice to use fully uppercase names) :
>
> MY_CONSTANT=3
>
> or
>
> My_constant=3
>
> Variable names starting with a lowercase letter define local variables.


Umm, uh (crawls under desk in embarassment...). Thanks. :}

--
Posted via http://www.ruby-forum.com/.



All times are GMT. The time now is 10:45 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.