好的,所以我构建了一个带有文本文件的东西,并将其分成多个部分,这些部分进一步划分为条目,然后在每个条目的一部分放置<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"}
非常感谢任何帮助!
答案 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。