4

我是红宝石新手。有一个关于静态和实例变量的非常基本的问题。

class Test

  def self.init
    @@var_static = 1
    @member = 2
  end

  def self.print
    puts "@@var_static: #{@@var_static}"
    puts "@member: #{@member}"
  end

end

Test.init
Test.print

为什么上面的代码允许在静态方法中初始化成员变量:@member:Test::init?我的理解是,@member 的使用会引发错误,因为它与 Test 类的任何实例无关。但不会抛出任何错误。

4

2 回答 2

3

一个类一个对象的实例,并且可以像任何其他对象一样具有实例变量:

>> Fixnum.class
=> Class

Fixnum该类是一个实例 Class

于 2012-06-18T17:49:58.890 回答
1

一篇解释这一点的好文章在这里:http ://railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/

于 2012-06-18T18:20:33.073 回答