如何在Ruby中执行另一个方法时使用一个方法中的局部变量?
因此,基本上我所做的是创建一个url列表,我正在从特定url解析这些url…在本例中,基本url是局部变量如何在Ruby中执行另一个方法时使用一个方法中的局部变量?,ruby,Ruby,因此,基本上我所做的是创建一个url列表,我正在从特定url解析这些url…在本例中,基本url是局部变量url 我想做的是,将url传递到my_list——现在可以正常工作了……但是一旦我有了这个列表,我就想将方法my_list中声明的数组list的第一个元素传递到方法add_category 参见代码: def add_category(url) new_url = url + '/web' end url = 'http://www.someurl.com' def my_
url
我想做的是,将url
传递到my_list
——现在可以正常工作了……但是一旦我有了这个列表,我就想将方法my_list
中声明的数组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])
我要做的是,我想根据我在add\u category
方法中指定的规则修改列表中的每个URL
想法?您不能从外部引用方法的局部变量。他们被称为“本地人”是有原因的!:)
似乎您的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])
您不能从外部引用方法的局部变量。他们被称为“本地人”是有原因的!:)
似乎您的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])
我在url+'/web'
行附近遇到一个“无法将字符串转换为数组”错误。想法?您的url
是一个数组,而不是字符串(如您所想)。对脚本进行一些调试打印,以了解正在发生的事情。啊……你是对的。我想出来了…但是为什么url
会是一个数组呢?不仅仅是做url='一些字符串
使url
成为一个强大的数组,而不是一个数组吗?我为您修复了这个,但您应该学会如何自己做。我实际上通过做url.first+'/web'
来修复它,它允许我访问列表[0]
。但是我仍然不明白为什么当我将url
声明为字符串时它是一个数组。我在url+'/web'
行周围遇到了一个“无法将字符串转换为数组”错误。想法?您的url
是一个数组,而不是字符串(如您所想)。对脚本进行一些调试打印,以了解正在发生的事情。啊……你是对的。我想出来了…但是为什么url
会是一个数组呢?不仅仅是做url='一些字符串
使url
成为一个强大的数组,而不是一个数组吗?我为您修复了这个,但您应该学会如何自己做。我实际上通过做url.first+'/web'
来修复它,它允许我访问列表[0]
。但我仍然不明白,当我将url
声明为字符串时,为什么它是一个数组。