Pseudo

Псевдопеременные это специальные переменные, которые выглядят как локальные переменные, но ведут себя как константы. Этим переменным нельзя присвоить какое-либо значение.

  • self — объект-получатель текущего метода(ссылка на текущий объект).
  • true — значение, соответствующее истине.
  • false — значение, представляющее ложь.
  • nil — значение, представляющее неопределённость.
  • __FILE__ — имя текущего исходного файла.
  • __LINE__ — текущий номер строки в исходном файле.

В Ruby self — это специальное ключевое слово, которое ссылается на текущий объект. Это может быть объект класса, экземпляр класса или даже класс сам по себе.

Контекст использования self

Находясь внутри метода экземпляра класса, self ссылается на текущий экземпляр этого класса -

class Dog
def bark
puts "Гав! Я #{self.name}."
end

def name
"Шарик"
end
end

dog = Dog.new
dog.bark

Находясь внутри класса, но вне методов, self ссылается на сам класс -

class Cat
def self.species
"Кошка"
end
end

puts Cat.species

Находясь внутри модуля, но вне методов, self ссылается на сам модуль -

module Animal
def self.type
"Животное"
end
end

puts Animal.type


Методы могут быть определены как экземплярные или классовые. Экземплярные методы - это методы, которые вызываются на экземплярах класса. Внутри таких методов self ссылается на текущий экземпляр -

class Bird
def initialize(name)
@name = name
end

def speak
puts "#{self.name} говорит: Чирик!"
end

def name
@name
end
end

bird = Bird.new("Попугай")
bird.speak

Классовые методы определяются с использованием self перед именем метода. Внутри таких методов self ссылается на сам класс.

class Fish
def self.habitat
"Вода"
end
end

puts Fish.habitat