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"4 回の配列になりました。

これら 2 つの項目を使用して配列を作成する場合は、次のようにします。

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 に答える
2

配列を構築する方法

この混乱は、Ruby で配列を構築する方法がたくさんあるという事実から生じています。非網羅的なリストには次のものが含まれます。

  1. Kernel#Arrayを呼び出します。
  2. Array#newを呼び出します。
  3. 配列リテラルを使用して配列を構築[]ます。

それぞれのセマンティクスは異なります。あなたがやっている方法には、次の署名があります。

Array#new(size=0, obj=nil)

これは、最初の引数が配列要素自体ではなく、配列のサイズであることを意味します。目的の結果を得るには、別の呼び出しを使用してください。

于 2013-07-02T17:05:29.167 に答える