浏览 242 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-04-29 关键字: 实例变量
大家好,我写了如下的测试代码:
------------------------------------ class Person
puts "step 0"
@aaa = Array.new
@aaa << 1
puts "step 1"
def initialize
puts "step 2"
@aaa << 2
end
def doSomething
puts "step 3"
@aaa<< 3
@aaa.each { |item|
# puts item
}
end
end
person=Person.new()
person.doSomething
------------------------------------ 结果发现走到step 2的“@aaa <<2”时提示出错。信息如下: step 0 step 1 step 2 test.rb:12:in `initialize': undefined method `<<' for nil:NilClass (NoMethodError) from test.rb:26:in `new' from test.rb:26 在Step 0和Step 1之间不是已经执行了@aaa = Array.new么?为什么还会输出错误呢? 我发现在initialize中写@aaa = Array.new就没有问题了,其原理哪位高人可否给指点一二? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-04-29
Person.class_eval {@aaa}
|
|
| 返回顶楼 | |
|
时间:2008-04-29
def initialize
puts "step 2" @aaa << 2 end 初始化的时候,新建的person对象何来@aaa实例变量? 你的第一个写的@aaa = Array.new 是Person class类对象的实例变量 |
|
| 返回顶楼 | |
|
时间:2008-04-30
sina2009 写道 def initialize
puts "step 2" @aaa << 2 end 初始化的时候,新建的person对象何来@aaa实例变量? 你的第一个写的@aaa = Array.new 是Person class类对象的实例变量 谢谢你的会带,我还有一点不太明白。 请问 Person Class类对象的实例不是person对象吗? 我觉得Person Class类在实例化(new)的时候应该会执行“第一个写的@aaa = Array.new”。 而且通过puts也发现了这点,但是为什么没有起作用呢? 可否再详细解惑一下,多谢了! |
|
| 返回顶楼 | |
|
时间:2008-05-01
xuteng935 写道 sina2009 写道 def initialize
puts "step 2" @aaa << 2 end 初始化的时候,新建的person对象何来@aaa实例变量? 你的第一个写的@aaa = Array.new 是Person class类对象的实例变量 谢谢你的会带,我还有一点不太明白。 请问 Person Class类对象的实例不是person对象吗? 我觉得Person Class类在实例化(new)的时候应该会执行“第一个写的@aaa = Array.new”。 而且通过puts也发现了这点,但是为什么没有起作用呢? 可否再详细解惑一下,多谢了! "而且通过puts也发现了这点..." -- 你多来几个person=Person.new()就会发现你的发现是个假象,所以要多做研究再来发问.... |
|
| 返回顶楼 | |






