参见英文答案 Total newbie: Instance variables in ruby?4个 在PHP中我写道: Class Test{ public $a=100;}$a=new Test();echo $a-a; //prints 100 它打印100,但在我写的时候是ruby: class Test @a=100 attr_accessor :aenda=Test
在PHP中我写道:
Class Test{ public $a=100; } $a=new Test(); echo $a->a; //prints 100
它打印100,但在我写的时候是ruby:
class Test @a=100 attr_accessor :a end a=Test.new puts a.a #=> prints nil
a为零,打印为零.为什么?
你混合了一些东西.你用@a = 100定义的是一个类实例变量.
您将使用attr_accessor访问的内容:a是一个实例变量@a.
实例变量用法示例:
class A def initialize a @a = a end attr_accessor :a end instance = A.new(2) #=> 2 instance.instance_variables #=> [:@a] instance.a #=> 2
类实例变量用法示例:
class A @a = 1 class << self attr_accessor :a end end A.a #=> nil A.a = 2 #=> 2 A.a #=> 2 instance = A.new instance.class.a # access instance's class instance variable #=> 2