Accessing a class's constants

后端 未结 4 815
一个人的身影
一个人的身影 2020-12-24 00:00

When I have the following:

class Foo
   CONSTANT_NAME = [\"a\", \"b\", \"c\"]

  ...
end

Is there a way to access with Foo::CONSTANT_

相关标签:
4条回答
  • 2020-12-24 00:23

    Some alternatives:

    class Foo
      MY_CONSTANT = "hello"
    end
    
    Foo::MY_CONSTANT
    # => "hello"
    
    Foo.const_get :MY_CONSTANT
    # => "hello"
    
    x = Foo.new
    x.class::MY_CONSTANT
    # => "hello"
    
    x.class.const_defined? :MY_CONSTANT
    # => true
    
    x.class.const_get :MY_CONSTANT
    # => "hello"
    
    0 讨论(0)
  • If you're writing additional code within your class that contains the constant, you can treat it like a global.

    class Foo
      MY_CONSTANT = "hello"
    
      def bar
        MY_CONSTANT
      end
    end
    
    Foo.new.bar #=> hello
    

    If you're accessing the constant outside of the class, prefix it with the class name, followed by two colons

    Foo::MY_CONSTANT  #=> hello
    
    0 讨论(0)
  • 2020-12-24 00:38

    What you posted should work perfectly:

    class Foo
      CONSTANT_NAME = ["a", "b", "c"]
    end
    
    Foo::CONSTANT_NAME
    # => ["a", "b", "c"]
    
    0 讨论(0)
  • 2020-12-24 00:44

    Is there a way to access Foo::CONSTANT_NAME?

    Yes, there is:

    Foo::CONSTANT_NAME
    
    0 讨论(0)
提交回复
热议问题