Що таке області видимості змінних в Ruby?

В Ruby область видимості змінної (також відома як область дії або контекст видимості) визначає, де можна використовувати та звертатися до даної змінної в програмі. Це пов’язано з тим, де змінна була оголошена та інкапсульована. Є кілька видів областей видимості в Ruby.

Локальна область видимості (Local Scope) - це змінні, оголошені в середині блоків, методів або інших конструкцій, що визначають локальний контекст, мають локальну область видимості. Вони доступні тільки в межах того блоку, методу чи іншого контексту, де вони були оголошені.

def example_method
  x = 10
  puts x
end

example_method
# puts x # Помилка, змінна x не доступна тут

Глобальна область видимості (Global Scope) - змінні, оголошені на рівні головної програми або визначені як глобальні, мають глобальну область видимості. Ці змінні доступні в усій програмі та можуть бути використані в будь-якій частині коду.

$global_variable = 20

def print_global_variable
  puts $global_variable
end

print_global_variable # Виводить 20

Область видимості класу (Class Scope) - змінні, оголошені в класі або визначені як змінні класу (з префіксом @@), мають область видимості класу. Вони доступні всередині класу та в усіх його методах.

class ExampleClass
  @@class_variable = 30

  def print_class_variable
    puts @@class_variable
  end
end

obj = ExampleClass.new
obj.print_class_variable # Виводить 30

Важливо враховувати області видимості при роботі з змінними в Ruby, оскільки неправильне їх використання може призвести до непередбачуваного поведінки програми.