代码之家  ›  专栏  ›  技术社区  ›  kapso

ruby/rails常量行为

  •  1
  • kapso  · 技术社区  · 14 年前

    我是Ruby新手(来自Java背景),我想知道RoR应用程序和一般Ruby中常量的行为。

    它们只是初始化一次吗,就像java静态变量一样?

    我正在初始化一个相当大的散列数组作为常量,所以我想确定我做得是否正确?

    谢谢你的帮助。

    module MyModule
    
      MY_CONST = [{...}, {...}, {...}, {...}, {...}, ...]
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   jdeseno    14 年前

    实际上不是。从 Variables and Constants 编程ruby指南部分:

    ruby常量也是对对象的引用。常量在第一次分配给时创建(通常在类或模块定义中)。 露比与不太灵活的语言不同,它允许更改常量的值,尽管这会生成警告消息。

    MY_CONST = 1
    MY_CONST = 2   # generates a warning
    

    生产:

    prog.rb:2: warning: already initialized constant MY_CONST