为什么ruby认为这个变量是对方法的调用?

时间:2014-04-15 03:29:58

标签: ruby

class Constants
    @@pi = 3.14
end

puts(ConstantContainer.pi)

我收到以下错误:undefined method 'pi' for ConstantContainer:Class (NoMethodError)

如何告诉ruby pi是一个类变量而不是方法?

编辑:我知道这对于定义常量非常不合适,但我需要一种快速演示类变量的方法。

1 个答案:

答案 0 :(得分:1)

将其包裹在一种方法中,当然

class Constants
    @@pi = 3.14

    def self.pi
      @@pi
    end
end

Constants.pi # => 3.14

或做丑陋的class_variable_get

class Constants
    @@pi = 3.14
  end

Constants.class_variable_get(:@@pi) # => 3.14