当前位置 博文首页 > ruby 类常量 解析

    ruby 类常量 解析

    作者:admin 时间:2021-02-07 09:22

     一个常量由大写字母开头.它应最多被赋值一次.在Ruby的当前版本中,常量的再赋值只会产生警告而不是错误(non-ANSI版的eval.rb不会报告这一警告)

    ruby>fluid=30
       30
    ruby>fluid=31
       31
    ruby>Solid=32
       32
    ruby>Solid=33
       (eval):1: warning: already initialized constant Solid
       33  


    常量可以定义在类里,但不像实变量,它们可以在类的外部访问.

    ruby> class ConstClass
        |   C1=101
        |   C2=102
        |   C3=103
        |   def show
        |     print C1," ",C2," ",C3,"\n"
        |   end
        | end
       nil
    ruby> C1
    ERR: (eval):1: uninitialized constant C1
    ruby> ConstClass::C1
       101
    ruby> ConstClass.new.show
    101 102 103
       nil  


    常量也可以定义在模块里.

    ruby> module ConstModule
        |   C1=101
        |   C2=102
        |   C3=103
        |   def showConstants
        |     print C1," ",C2," ",C3,"\n"
        |   end
        | end
       nil
    ruby> C1
    ERR: (eval):1: uninitialized constant C1
    ruby> include ConstModule
       Object
    ruby> C1
       101
    ruby> showConstants
    101 102 103
       nil
    ruby> C1=99  # not really a good idea
       99
    ruby> C1
       99
    ruby> ConstModule::C1  # the module's constant is undisturbed ...
       101
    ruby> ConstModule::C1=99 
    ERR: (eval):1: compile error
    (eval):1: parse error
    ConstModule::C1=99
                    ^
    ruby> ConstModule::C1  # .. regardless of how we tamper with it.
       101   

      js
    下一篇:没有了