0

所以基本上我正在做的是创建一个我从特定 url 解析的 URL 列表......在这种情况下,基本 url 是局部变量url

我想要做的是,传递urlmy_list- 现在工作正常......但是一旦我有了那个列表,我就想将方法中list声明的数组的第一个元素传递my_list给方法add_category

见代码:

def add_category(url)
    new_url = url + '/web'  
end

url = 'http://www.someurl.com'

def my_list(url)
    root = Nokogiri::HTML(open(url))
    list = root.css("a").map do |link|
        [link.text, link[:href]]           
      end

end

my_list(url)

add_category(list[0])

我要去的地方是,我想根据我在方法list中指定的规则修改数组中的每个URL。add_category

想法?

4

1 回答 1

3

您不能从外部引用方法的局部变量。他们被称为“本地”是有原因的!:)

看来您的my_list方法只是生成一个稍后要使用的列表。因此,将其返回值保存到局部变量(在调用者范围内)并根据需要使用。看一下这个:

def add_category(url)
    url + '/web'  
end

url = 'http://www.someurl.com'

def my_list(url)
    root = Nokogiri::HTML(open(url))
    root.css("a").map do |link|
        [link.text, link[:href]]           
    end
end

list = my_list(url)

new_url = add_category(list[0][1])
于 2012-04-18T20:48:58.057 回答