Evgenii Legotckoi
10 июля 2016 г. 13:01

User Guide #21 - Ruby - переменные экземпляра класса

Имена переменных класса начинаются с символа @, и их область применения ограничивается областью видимости внутри класса, то есть той областью, на которую можно сослаться, используя переменную self . Два различных объекта, даже если они относятся к одному класса, могут иметь различные значения их переменных экземпляра класса. Снаружи объекта, переменные экземпляра не могут быть изменены или просмотрены (то есть переменные экземпляра класса в Ruby никогда не бывают публичными, public ), исключая те случаи, когда программист предусматривает для этого специальные методы. Как и в случае глобальных переменных, переменные экземпляра класса имеют значение nil , до тех пор, пока не будут инициализированы.


Переменные экземпляра в Ruby не нуждаются в объявлении. Это подразумевает гибкость структуры объекта. Фактически, каждая переменная экземпляра класса динамически добавляется в объект, когда впервые появляется в объекте.

  1. ruby> class InstTest
  2. | def set_foo(n)
  3. | @foo = n
  4. | end
  5. | def set_bar(n)
  6. | @bar = n
  7. | end
  8. | end
  9. nil
  10. ruby> i = InstTest.new
  11. #<InstTest:0x83678>
  12. ruby> i.set_foo(2)
  13. 2
  14. ruby> i
  15. #<InstTest:0x83678 @foo=2>
  16. ruby> i.set_bar(4)
  17. 4
  18. ruby> i
  19. #<InstTest:0x83678 @foo=2, @bar=4>

Заметьте выше, что объект i не сообщает о значении @bar до тех пор, пока не будет вызван метод set_bar.

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь