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
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
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