Understanding Variable Naming in Ruby

R

rtilley

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
 
G

gregarican

Brad said:
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 :)
 
G

gregarican

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,183
Messages
2,570,966
Members
47,513
Latest member
JeremyLabo

Latest Threads

Top