为什么不能在Ruby的单例类定义中访问类实例变量?

玛丽·罗斯·库克
class MyClass
  @my_class_instance_variable = "here"

  p @my_class_instance_variable # => "here"

  class << self
    p @my_class_instance_variable # => nil
  end
end

class MyClass
  p @my_class_instance_variable # => "here"
end

为什么要p打印第二张,而要打印nil第三p"here"呢?我对单例类定义(class << self)的理解是,它具有与类定义(class MyClass相同的作用域

(此问题的标题相似,但重点不同。)

安德烈·德尼科(Andrey Deineko)

我对单例类定义(类<< self)的理解是,它具有与类定义相同的作用域

不。范围是不同的。@my_class_instance_variable在的范围内定义MyClass,但尝试在MyClass的单例类的范围内访问它

就像检查一样容易:

class Foo
  puts self #=> Foo

  class << self
    puts self #=> #<Class:Foo>
  end
end

输出为:

Foo
#<Class:Foo>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在类定义中实例化同一类的对象

来自分类Dev

Ruby:为什么实例变量在类nil中定义?

来自分类Dev

为什么不能在类中初始化实例变量?

来自分类Dev

为什么不能在Java中创建本地类的实例?

来自分类Dev

为什么我不能在Flow API Subscriber中从onComplete访问类变量

来自分类Dev

为什么我不能从类外部访问 __init__ 中定义的类变量?

来自分类Dev

为什么我不能在PHP中为类变量定义连接字符串?

来自分类Dev

为什么我不能在PHP中为类变量定义连接字符串?

来自分类Dev

为什么单例类不能被子类化?

来自分类Dev

为什么方法不能访问类变量?

来自分类Dev

Ruby元类:为什么在定义单例方法时要使用三个?

来自分类Dev

在Managed C ++中,在类中定义静态单例实例的正确方法是什么?

来自分类Dev

如果数组在单例类内,为什么不能将项目添加到数组中?

来自分类Dev

如果Ruby类的实例变量包含模块中的变量值,为什么不能将它放入?

来自分类Dev

为什么不能在类的实例上设置属性?

来自分类Dev

为什么不能在类的实例上设置属性?

来自分类Dev

单例类和实例变量

来自分类Dev

单例类和实例变量

来自分类Dev

为什么不能在反应类的状态下定义数组变量?

来自分类Dev

为什么我们不能在.Net中创建静态类的实例

来自分类Dev

为什么我不能在Java中抛出或捕获泛型类的实例?

来自分类Dev

为什么在Eager初始化中,在加载类时创建的单例类的实例可能会带来缺点?

来自分类Dev

为什么在Eager初始化中,在加载类时创建的单例类的实例可能会带来缺点?

来自分类Dev

为什么不能在T4模板的类成员中访问实用程序方法?

来自分类Dev

C ++:为什么不能在派生类中访问受保护的构造方法?

来自分类Dev

为什么我不能在定义中定义变量?

来自分类Dev

为什么我不能在React类组件中创建变量?

来自分类Dev

为什么不能在Rails控制器中重新分配类变量

来自分类Dev

为什么我不能访问我的类实例方法?

Related 相关文章

  1. 1

    为什么我不能在类定义中实例化同一类的对象

  2. 2

    Ruby:为什么实例变量在类nil中定义?

  3. 3

    为什么不能在类中初始化实例变量?

  4. 4

    为什么不能在Java中创建本地类的实例?

  5. 5

    为什么我不能在Flow API Subscriber中从onComplete访问类变量

  6. 6

    为什么我不能从类外部访问 __init__ 中定义的类变量?

  7. 7

    为什么我不能在PHP中为类变量定义连接字符串?

  8. 8

    为什么我不能在PHP中为类变量定义连接字符串?

  9. 9

    为什么单例类不能被子类化?

  10. 10

    为什么方法不能访问类变量?

  11. 11

    Ruby元类:为什么在定义单例方法时要使用三个?

  12. 12

    在Managed C ++中,在类中定义静态单例实例的正确方法是什么?

  13. 13

    如果数组在单例类内,为什么不能将项目添加到数组中?

  14. 14

    如果Ruby类的实例变量包含模块中的变量值,为什么不能将它放入?

  15. 15

    为什么不能在类的实例上设置属性?

  16. 16

    为什么不能在类的实例上设置属性?

  17. 17

    单例类和实例变量

  18. 18

    单例类和实例变量

  19. 19

    为什么不能在反应类的状态下定义数组变量?

  20. 20

    为什么我们不能在.Net中创建静态类的实例

  21. 21

    为什么我不能在Java中抛出或捕获泛型类的实例?

  22. 22

    为什么在Eager初始化中,在加载类时创建的单例类的实例可能会带来缺点?

  23. 23

    为什么在Eager初始化中,在加载类时创建的单例类的实例可能会带来缺点?

  24. 24

    为什么不能在T4模板的类成员中访问实用程序方法?

  25. 25

    C ++:为什么不能在派生类中访问受保护的构造方法?

  26. 26

    为什么我不能在定义中定义变量?

  27. 27

    为什么我不能在React类组件中创建变量?

  28. 28

    为什么不能在Rails控制器中重新分配类变量

  29. 29

    为什么我不能访问我的类实例方法?

热门标签

归档