• 类常量

    类常量

    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):

    Ruby的当前实现中,重新给一个常量赋值将产生一个警告,而不是一个错误(非ansi版本的eval.rb不报告警告):

    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. | puts "#{C1} #{C2} #{C3}"
    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. | puts "#{C1} #{C2} #{C3}"
    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 # 这不是一个好主意
    20. 99
    21. ruby> C1
    22. 99
    23. ruby> ConstModule::C1
    24. 101
    25. ruby> ConstModule::C1=99 # 更早的版本中不允许这样做
    26. (eval):1: warning: already initialized constant C1
    27. 99
    28. ruby> ConstModule::C1 # "enough rope to shoot yourself in the foot"
    29. 99

    上一章 局部变量
    下一章 异常处理:rescue