gpt4 book ai didi

ruby - 如何访问 Ruby block 内的实例变量?

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:21 24 4
gpt4 key购买 nike

<分区>

我有以下代码:

class MyXmlReader

attr_accessor :filename, :lines

def initialize(filename)
@filename = filename
@line_hash = {}
end

def read
reader = Nokogiri::XML::Reader(open(@filename))
Xml::Parser.new(reader) do
... do stuff
@line_hash[var] = line # ERROR!
end
end

end

看起来该 block 在新范围内运行。因为我得到:

NoMethodError: undefined method `[]' for nil:NilClass

这很容易解决,方法是创建局部变量,然后在 read 方法的末尾将这些变量分配给实例变量。但我想知道为什么在 block 内可以访问局部变量,但不能访问实例变量。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com