[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Understanding Variable Naming in Ruby

Brad Tilley

3/14/2006 8:20:00 PM

I'm trying to better understand how variables are named in Ruby...
here's what I think I understand. Please correct me where I misunderstand:

#Globals are defined outside a class/method and are
#available everywhere. Must starts with '$'
$global_variable

#Class names must start with capitalized letter.
class Class_name

#Starts with '@@' and is available to all methods in the class.
@@class_variable

#Method name must start with lowercase letter or '_'
def method_name

#Must start with '@' similar to Python's self notation.
#This variable is local to the method.
@method_variable

end
end


Where do constants and local variables fit into this?

Thanks,
Brad
2 Answers

greg.kujawa

3/14/2006 8:33:00 PM

0

Brad wrote:

> Where do constants and local variables fit into this?

Constants typically are in all upper case characters. Then local
variables don't start with a leading @@, @, or $. Something like
thisLocalVar or this_local_var depending on your background :-)

greg.kujawa

3/14/2006 8:57:00 PM

0

Here is a nonsensical class that uses class, instance, and local
variables. I don't think creating my own class variable accessors is
Rubyish, but I just threw it in there for kicks.

class Foo
attr_accessor :instVar, :localVar
@@classVar="class variable"
localVar="local variable"

def initialize
super
@instVar="instance variable"
end

def self.classVar
return @@classVar
end

def self.classVar=other
@@classVar=other
return @@classVar
end

def localVarCheck
begin
print "#{self}'s local variable is #{localVar}.\n"
rescue NameError => e
print "#{self}'s local variable doesn't exist! The specific error
is:\n#{e}.\n"
end
end


end

print "Foo's classVar is set to #{Foo.classVar}.\n"
print "Foo's classVar is now changed to #{Foo.classVar="new class
variable"}.\n"
foo=Foo.new
print "foo's instVar is set to #{foo.instVar}.\n"
print "foo's instVar is now changed to #{foo.instVar="new instance
variable"}.\n"
foo.localVarCheck