2

无法理解这是什么问题

nameTag = "div[class='designer_about'] a"
designsTag = "li[class='span-2']"
pullTags = Array.new(nameTag, designsTag)

错误:

designers_list_mirraw.rb:8:in `initialize': can't convert String into Integer (TypeError)
from designers_list_mirraw.rb:8:in `new'
from designers_list_mirraw.rb:8:in `<main>'

我是红宝石新手

4

6 回答 6

25

正如 juanpastas 提到的,Array::new(size,obj)期望一个数字和一个对象。您可以在链接到的教程中看到这一点:

names = Array.new(4, "mac")

names现在是一个有"mac"四次的数组。

如果您的意图是创建一个包含这两项的数组:

pullTags = Array.[nameTag, designsTag]
# which is equivalent to
pullTags = Array[nameTag, designsTag]
# which are the more verbose versions of
pullTags = [nameTag, designsTag]

请参阅[](*args)

于 2013-07-02T17:05:27.853 回答
4

Ary.new(length, item)是在您需要一个数组在特定时间重复相同项目的时候。不是Array.new(item, item)。第一个参数代表你想要的数组长度。

在您的情况下,您应该使用:

name_tag = "div[class='designer_about'] a"
designs_tag = "li[class='span-2']"
pull_tags = [name_tag, designs_tag]

顺便说一句,按照 Ruby 的约定,snake_case_variable_name那时更受欢迎camelCaseVariabelName

于 2013-07-02T17:02:51.587 回答
3

Array::new

它接收整数,然后是一个对象,或者一个数组,所以你可以使用:

Array.new(2,'some') => ['some','some']
Array.new(an_array_here)
于 2013-07-02T16:57:15.433 回答
2

构建数组的方法

混淆来自这样一个事实,即在 Ruby 中构建数组的方法有很多。一份非详尽的清单包括:

  1. 调用Kernel#Array
  2. 调用Array#new
  3. 用数组字面量构造一个数组[],例如.

每个的语义各不相同。你这样做的方式有以下签名:

数组#new(大小=0,obj=nil)

这意味着第一个参数是数组的大小,而不是数组元素本身。使用不同的调用来实现您想要的结果。

于 2013-07-02T17:05:29.167 回答
1

阵列

nameTag = "div[class='designer_about'] a"
designsTag = "li[class='span-2']"

可以通过以下方式调用新方法:

Array.new # => []
Array.new(2) # => [nil,nil]
Array.new(2,designsTag) # =>["li[class='span-2']", "li[class='span-2']"]

或者要逐个添加元素,您可以使用 push 方法:

[ 1, 2 ] << "c" << "d" << [ 3, 4 ] #=> [ 1, 2, "c", "d", [ 3, 4 ] ]
于 2013-07-02T17:19:03.077 回答
0

如果你有字符串项目,你也可以使用%W

> nameTag = "div[class='designer_about'] a"
# => "div[class='designer_about'] a" 
> designsTag = "li[class='span-2']"
# => "li[class='span-2']"
> %W(#{nameTag} #{designsTag}) 
# => ["div[class='designer_about'] a", "li[class='span-2']"]

参考http ://www.zenspider.com/Languages/Ruby/QuickRef.html#arrays

于 2014-01-14T07:30:47.480 回答