访问类变量?

时间:2010-10-19 20:55:59

标签: ruby class-variables

class Foo
  @@default = "default"

  p instance_variables
  p class_variables

  class << self
    p instance_variables
    p class_variables

    # How do I access the @@default variable here?
  end
end

2 个答案:

答案 0 :(得分:2)

与在其他任何地方执行此操作的方式相同:@@default

我不确定p ..应该做什么(Ruby不是我的母语),但这可行

class Foo
  @@default = "default"

  class << self
    puts "#{@@default}"
  end
end

答案 1 :(得分:1)

这个问题很有意思,因为它基本上要求“元类有没有办法引用它的”真正“类?

据我所知,答案是“不”,因为Ruby保留的所有“向上”祖先指针也指向元类,因此在其中一个中运行class_variables()会告诉你它的类实例变量。因此,您必须按名称引用对象,或者只需在输入元类上下文之前建立句柄...

class Foo
  @@default = "default"
  @@me = self

  p instance_variables
  p class_variables

  class << self
    p instance_variables
    p @@me.class_variables
  end
end