我的实例变量没有保持其值

时间:2013-04-11 18:56:54

标签: ruby instance-variables

好的,所以我构建了一个带有文本文件的东西,并将其分成多个部分,这些部分进一步划分为条目,然后在每个条目的一部分放置<a>个标记。我有一个实例变量@section_name,我需要在制作链接时使用它。问题是,如果我看错了,@section_name似乎失去了它的价值。一些代码:

def find_entries
  @sections.each do |section|
    @entries = section.to_s.shatter(/(some) RegEx/)
    @section_name = $1.to_s
    puts @section_name
    add_links
  end
end

def add_links
  puts "looking for #{@section_name} in #{@section_hash}"
  section_link = @section_hash.fetch(@section_name)
end

如果我将对add_links的调用注释掉,则会显示所有部分的名称,但如果我将其包括在内,我就会得到:

looking for  in {"contents" => "of", "the" => "hash"} 

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

$1是一个全局变量,可以在以后的代码中使用。$n包含最后一个匹配的n-th (...)捕获

"foobar".sub(/foo(.*)/, '\1\1')
 puts "The matching word was #{$1}" #=> The matching word was bar

"123 456 789" =~ /(\d\d)(\d)/
 p [$1, $2] #=> ["12", "3"]

所以我认为@entries = section.to_s.shatter(/(some) RegEx/)行没有正确匹配。因此,您的第一个匹配组不包含任所以$1打印为nil。