There are four different types of variables in Ruby- Local variables, Instance variables, Class variables and Global variables. An instance variable in ruby has a name starting with @ symbol, and its content is restricted to whatever the object itself refers to. Two separate objects, even though they belong to the same class, are allowed to have different values for their instance variables.
These are some of the characteristics of Instance variables in Ruby:
- Instance variable have the value nil before initialization.
- All instance variables are private by default.
- The instance variables of an object can only be accessed by the instance methods of that object.
- The ruby instance variables do not need a declaration. This implies a flexible object structure.
- Every instance variable is dynamically appended to an object when it is first referenced.
- An instance variable belongs to the object itself (each object has its own instance variable of that particular class)
- One instance object can alter the values of its instance variables without modifying any other instance.
- An Instance variable can be used by several class methods except when the method is considered to be static.
Example #1:
class Geek
def initialize()
@geekName = "R2J"
end
def displayDetails()
puts "Geek name is #@geekName"
end
end
obj=Geek. new ()
obj.displayDetails()
|
Output:
Geek name is R2J
In the above program, geekName is the instance variable initialized using a constructor and is accessed by the instance method displayDetails() of the class Geek.
Let’s look at another program to illustrate the use of instance variables in Ruby:
Example #2:
class Geek
def getAge(n)
@geekAge = n
end
def incrementAge()
@geekAge += 1
end
def displayDetails()
puts "Geek age is #@geekAge"
end
end
obj = Geek. new
obj.getAge( 20 )
obj.displayDetails()
obj.incrementAge()
obj.displayDetails()
|
Output:
Geek age is 20
Geek age is 21
In the above program, geekAge is the instance variable initialized in the instance method getAge(), here geekAge is also accessed by other two instance methods incrementAge() and displayDetails() in which incrementAge() method modifies the value of geekAge and displayDetails() is used to display the value of geekAge.