Ruby Q & A

 

What is the ‘self’ keyword in Ruby?

In Ruby, the `self` keyword is a fundamental concept that refers to the current object or the current instance of a class. It plays a crucial role in determining the context in which code is executed and in accessing both instance and class-level methods and variables.

Here are some key aspects of the `self` keyword in Ruby:

  1. Instance Methods: Inside an instance method, `self` refers to the instance of the class on which the method was called. It allows you to access and modify instance variables specific to that instance. For example:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```ruby
class Person
def initialize(name)
@name = name
end
def introduce
"Hi, I'm #{@name}."
end
end
person = Person.new("Alice")
puts person.introduce # Output: Hi, I'm Alice.
```
```ruby class Person def initialize(name) @name = name end def introduce "Hi, I'm #{@name}." end end person = Person.new("Alice") puts person.introduce # Output: Hi, I'm Alice. ```
 ```ruby

   class Person

     def initialize(name)

       @name = name

     end




     def introduce

       "Hi, I'm #{@name}."

     end

   end




   person = Person.new("Alice")

   puts person.introduce # Output: Hi, I'm Alice.

   ```

In the `introduce` method, `self` refers to the `person` instance.

 

  1. Class Methods: Inside a class method, `self` refers to the class itself. It allows you to define and access class-level variables and methods. Class methods are defined using the `self` keyword followed by a dot. For example.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```ruby
class MyClass
def self.my_class_method
"This is a class method."
end
end
puts MyClass.my_class_method # Output: This is a class method.
```
```ruby class MyClass def self.my_class_method "This is a class method." end end puts MyClass.my_class_method # Output: This is a class method. ```
 ```ruby

   class MyClass

     def self.my_class_method

       "This is a class method."

     end

   end




   puts MyClass.my_class_method # Output: This is a class method.

   ```

In the `my_class_method`, `self` refers to the class `MyClass`.

 

  1. Implicit Receiver: In Ruby, you can omit the explicit use of `self` when calling methods or accessing variables. Ruby will automatically determine the context and apply `self` accordingly. For instance:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
```ruby
class Dog
def initialize(name)
@name = name
end
def bark
"Woof, I'm #{@name}!"
end
end
dog = Dog.new("Buddy")
puts dog.bark # Output: Woof, I'm Buddy!
```
```ruby class Dog def initialize(name) @name = name end def bark "Woof, I'm #{@name}!" end end dog = Dog.new("Buddy") puts dog.bark # Output: Woof, I'm Buddy! ```
 ```ruby

   class Dog

     def initialize(name)

       @name = name

     end




     def bark

       "Woof, I'm #{@name}!"

     end

   end




   dog = Dog.new("Buddy")

   puts dog.bark # Output: Woof, I'm Buddy!

   ```

In the `bark` method, `@name` is implicitly treated as `self.@name`, where `self` refers to the `dog` instance.

Understanding the `self` keyword is essential for working effectively with Ruby classes, as it helps you manage instance-specific and class-specific behavior, variables, and methods. It’s a core concept in object-oriented programming in Ruby and provides the foundation for encapsulation and object-oriented design principles.

Previously at
Flag Argentina
Chile
time icon
GMT-3
Experienced software professional with a strong focus on Ruby. Over 10 years in software development, including B2B SaaS platforms and geolocation-based apps.