Evgenii Legotckoi
Aug. 25, 2016, 1:05 p.m.

User Guide #23 - Ruby - Class constants

A constant has a name starting with an uppercase character. It should be assigned a value at most once. In the current implementation of ruby, reassignment of a constant generates a warning but not an error (the non-ANSI version of eval.rb does not report the warning):

  1. ruby>fluid=30
  2. 30
  3. ruby>fluid=31
  4. 31
  5. ruby>Solid=32
  6. 32
  7. ruby>Solid=33
  8. (eval):1: warning: already initialized constant Solid
  9. 33

Constants may be defined within classes, but unlike instance variables, they are accessible outside the class.

  1. ruby> class ConstClass
  2. | C1=101
  3. | C2=102
  4. | C3=103
  5. | def show
  6. | print C1," ",C2," ",C3,"\n"
  7. | end
  8. | end
  9. nil
  10. ruby> C1
  11. ERR: (eval):1: uninitialized constant C1
  12. ruby> ConstClass::C1
  13. 101
  14. ruby> ConstClass.new.show
  15. 101 102 103
  16. nil

Constants can also be defined in modules.

  1. ruby> module ConstModule
  2. | C1=101
  3. | C2=102
  4. | C3=103
  5. | def showConstants
  6. | print C1," ",C2," ",C3,"\n"
  7. | end
  8. | end
  9. nil
  10. ruby> C1
  11. ERR: (eval):1: uninitialized constant C1
  12. ruby> include ConstModule
  13. Object
  14. ruby> C1
  15. 101
  16. ruby> showConstants
  17. 101 102 103
  18. nil
  19. ruby> C1=99 # not really a good idea
  20. 99
  21. ruby> C1
  22. 99
  23. ruby> ConstModule::C1 # the module's constant is undisturbed ...
  24. 101
  25. ruby> ConstModule::C1=99
  26. ERR: (eval):1: compile error
  27. (eval):1: parse error
  28. ConstModule::C1=99
  29. ^
  30. ruby> ConstModule::C1 # .. regardless of how we tamper with it.
  31. 101

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • Evgenii Legotckoi
    April 16, 2025, 5:08 p.m.
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    April 12, 2025, 5:12 p.m.
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    April 1, 2025, 11:41 a.m.
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    March 9, 2025, 4:14 p.m.
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…