如何在Ruby中执行另一个方法时使用一个方法的局部变量?

时间:2012-04-18 20:44:43

标签: ruby

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

我想要做的是,将url传递给my_list - 现在工作正常......但是一旦我有了这个列表,我就想传递数组的第一个元素{{ 1}}在方法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数组中的每个网址。

思想?

1 个答案:

答案 0 :(得分: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])