Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中执行另一个方法时使用一个方法中的局部变量?_Ruby - Fatal编程技术网

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

如何在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解析这些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_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
声明为字符串时,为什么它是一个数组。