Это потому, что переменные, начинающиеся с символа @
, являются переменными экземпляра, но когда вы впервые вызываете его, экземпляр Appthin не инициализируется.
Когда вы ссылаетесь на переменную экземпляра, он выбирает self
и устанавливает переменную экземпляра для этого.
Если вы вызываете переменную экземпляра из тела вашего класса , тогда self
- это сам класс, который является экземпляром Class, но не экземпляром Appthin.
Решение вашей проблемы зависит от того, что вы пытаетесь сделать:
Если вы хотите установить переменную в теле класса, которая доступна для всех экземпляров класс, я бы использовал константу.
class Appthin
FILE_DIR = ['a', 'b']
def find_class
puts FILE_DIR
end
end
Если вы пытаетесь установить переменную, принадлежащую конкретному c экземпляру Appthin, которую затем можно изменить, установите ее в методе initialize :
class Appthin
def initialize
@file_dir = ['a', 'b']
end
def find_class
puts @file_dir
end
end