当前位置 : 主页 > 编程语言 > ruby >

Ruby类变量初始值

来源:互联网 收集:自由互联 发布时间:2021-06-23
参见英文答案 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
参见英文答案 > 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 :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
网友评论