Forum: Ruby Understanding Variable Naming in Ruby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
rtilley (Guest)
on 2006-03-14 22:24
(Received via mailing list)
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
Greg K. (Guest)
on 2006-03-14 22:34
(Received via mailing list)
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 K. (Guest)
on 2006-03-14 23:01
(Received via mailing list)
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
This topic is locked and can not be replied to.