2 m read

Variables in Ruby

Introduction to Variables in Ruby

In programming, variables play a fundamental role. They essentially serve as storage locations that can hold data to be used by a program.

In the Ruby programming language, variables are no exception to this rule. They are known for exhibiting unique traits that set them apart from variables in other languages.

What are Variables?

At its most basic, a variable is a label assigned to an object in Ruby.

Variables come in different types, each starting with a particular character to signify what kind of variable it is.

Types of Variables in Ruby

Ruby supports five types of variables:

  1. Local Variables
  2. Instance Variables
  3. Class Variables
  4. Global Variables
  5. Constants

Understanding Local Variables

Local variables begin with a lowercase letter or an underscore (_).

Their scope is limited to the block they are declared in, making them accessible only within that block.

What Makes Instance Variables Unique

On the other hand, instance variables are recognizable by their prefix, the @ symbol.

They promise more significant reach, as they are available across all methods within a class they are an instance.

Going Deeper: Ruby Variables in Action

Working with Local Variables

Consider the following Ruby code snippet:

def sum(a, b)
 c = a + b
 return c

In this code, a, b, and c are local variables.

They are only accessible within the method they declare in, the sum method.

Engaging with Instance Variables

Let’s look at an example of an instance variable:

class Box 
 def initialize(w,h) 
  @width, @height = w, h 
 def getArea 
  @width * @height 

In the example above, @width and @height are instance variables for the Box class.

We can use them in any method within the Box class.

The Utility of Global Variables

Check out this simple script using a global variable:

$global_variable = 10
class Class1
 def print_global
   puts "Global variable in Class1 is #$global_variable"
class Class2
 def print_global
   puts "Global variable in Class2 is #$global_variable"
class1obj = Class1.new
class2obj = Class2.new

In this script, Class1 and Class2 can access the global variable $global_variable because its scope is conveniently global.

The Subtleties in Ruby Variables

Now that we grasp the core concept of each variable type, let’s delve into some nuances that Ruby brings.

Uninitialized Variables

Ruby has an interesting behavior when dealing with uninitialized variables.

An uninitialized local variable, if used, will result in an undefined local variable or method error.

However, an uninitialized instance variable will simply return a value of nil.

For class and global variables, usage before initialization will result in a warning (if the -w option is enabled) and a nil value.

Differences in Variable Scopes

One important discerning point in Ruby variables tends to be their scope.

The instance variable’s values are enclosed to particular instances of an object, indicating that every instance has its own copy.

This is contrasted with class variables, which are shared among instances of a class, and therefore, changing their value in one instance will affect them in other instances.”


Understanding variables, their scopes, types, and how to properly use each is critical when dealing with Ruby or any other programming language.

This knowledge aids not only in writing clean and efficient code but also in debugging code and alleviating complex problems.

Though Ruby’s variables may initially appear complex, these aspects become second nature with practice and repeated use.

This article continues a series dedicated to Ruby syntax and coding. Please check out the previous article, Understanding Ruby Syntax.


Leave a Reply